Distinct Enregistrement Problème dans MS SQL Server 2008 requête

voix
0

J'ai cette requête pour récupérer le OrderStatus total qui ont des valeurs 1 et 5. Comment puis-je somme que OD.OrderStatus distincte = 2 car il peut y avoir plusieurs enregistrements dans la table ORDERDETAILS avec OrderStatus comme 2.

S'il vous plaît aider

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
Créé 27/08/2009 à 02:11
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

Donc, vous voulez qu'il soit 1, peu importe combien vous en avez? Peut-être utiliser signe?

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
Créé 27/08/2009 à 02:15
source utilisateur

voix
0

Il suffit d'utiliser un sous-requête pour aider à votre résultat.

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 

Devrait faire l'affaire ...

Créé 19/07/2011 à 17:45
source utilisateur

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