Distinct Rekord Ausgabe in MS SQL Server 2008 Abfrage

stimmen
0

Ich habe diese Abfrage die Gesamtorderstatus abzurufen, die Werte 1 und 5. Wie kann ich Sum nur unterschiedliche OD.OrderStatus = 2, da es haben kann, mit Orderstatus als 2 mehrere Datensätze in Orderdetails-Tabelle sein.

Bitte helfen

SELECT O.OrderDate,
Sum(Case When OD.OrderStatus = 2 Then 1 Else 0 End) AS OrdersOffered,
Sum(Case When OD.OrderStatus = 1 Then 1 Else 0 End) AS OrdersAccepted
FROM Orders O,OrderDetails OD
Where O.Order_ID=OD.Order_ID
GROUP BY OrderDate
Veröffentlicht am 27/08/2009 um 02:11
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Also, wollen Sie es 1 sein, unabhängig davon, wie viele haben Sie? Vielleicht SIGN verwenden?

SELECT O.OrderDate
  ,SIGN(Sum(Case When OD.OrderStatus = 2 Then 1 Else 0 End)) AS OrdersOffered
  ,Sum(Case When OD.OrderStatus = 1 Then 1 Else 0 End) AS OrdersAccepted
FROM Orders O
  JOIN OrderDetails OD  ON O.Order_ID=OD.Order_ID
GROUP BY OrderDate
Beantwortet am 27/08/2009 um 02:15
quelle vom benutzer

stimmen
0

Verwenden Sie einfach eine Unterabfrage mit dem Ergebnis zu helfen.

SELECT 
O.OrderDate, 
Sum(Case When OD.OrderStatus = 2 Then 1 Else 0 End) AS OrdersOffered, 
Sum(Case When OD.OrderStatus = 1 Then 1 Else 0 End) AS OrdersAccepted 
FROM Orders O inner join
    (Select distinct Order_ID,OrderStatus 
    from OrderDetails) OD on O.Order_ID=OD.Order_ID
GROUP BY OrderDate 

Sollte der Trick ...

Beantwortet am 19/07/2011 um 17:45
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more