Проблема с отчетливой записью в запросе MS SQL Server 2008 - PullRequest
0 голосов
/ 27 августа 2009

У меня есть этот запрос, чтобы получить общее значение OrderStatus со значениями 1 и 5. Как суммировать только отдельные OD.OrderStatus = 2, поскольку в таблице Orderdetails может быть несколько записей с OrderStatus равным 2.

Пожалуйста, помогите

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

Ответы [ 2 ]

1 голос
/ 27 августа 2009

Итак, вы хотите, чтобы это было 1, независимо от того, сколько у вас? Может быть, использовать SIGN?

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
0 голосов
/ 19 июля 2011

Просто используйте подзапрос, чтобы помочь с вашим результатом.

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 

Должен сделать трюк ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...