Emissão Gravar distinta em MS SQL consulta Server 2008

votos
0

Eu tenho essa consulta para buscar o OrderStatus total que têm valores 1 e 5. Como faço para Sum apenas distintas OD.OrderStatus = 2 como pode haver vários registros na tabela OrderDetails com OrderStatus como 2.

Por favor ajude

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
Publicado 27/08/2009 em 02:11
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Então, você quer que ele seja 1, independentemente de quantos você tem? Talvez usar SINAL?

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
Respondeu 27/08/2009 em 02:15
fonte usuário

votos
0

Basta usar uma subconsulta para ajudar com o seu resultado.

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 

Deve fazer o truque ...

Respondeu 19/07/2011 em 17:45
fonte usuário

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