Группировать по, скрывая столбец - TSQL - PullRequest
2 голосов
/ 08 марта 2012

У меня есть структура таблицы

Table1

ID  Hours    Qty      ProductID
1   2        1       100
1   3        5       200
2   6        6       100
2   2        2       200

Если продукт равен (1,2,3), тогда мне нужна сумма (кол-во * часов), если продукт в (200,300,400,500)тогда мне нужна сумма (кол-во).

Я написал такой код

select ID,case when productid in (1,2,3) then 
          SUM( qty * hrs) 
          when productid in (100,200,300) then   SUM( qty ) end result1

 from Prod group by id ,productid 

, но я не хочу группировать по продукции, я хотел бы передать его в "INоговорка ". Как этого добиться.

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

Переместите SUM() за пределы оператора CASE WHEN.

SELECT
  ID,
  SUM(case when productid in (1,2,3)       then qty * hrs
           when productid in (100,200,300) then qty
      end) result1
FROM
  Prod
GROUP BY
  ID
0 голосов
/ 08 марта 2012

Если вы хотите, чтобы все столбцы плюс результат вашего запроса, вы можете сделать это:

select p.*, aux.result
from Prod p
inner join (select ID,case when productid in (1,2,3) then SUM( qty * hrs) 
                           when productid in (100,200,300) then   SUM( qty )
                      end as result
            from Prod group by id ,productid) aux on aux.id = p.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...