Выбор набора отдельных значений и подсчет их по отдельности в новые столбцы - PullRequest
2 голосов
/ 13 октября 2010

Я вполне уверен, что это легко сделать, но я новичок в SQL, поэтому будьте осторожны. Если я хочу написать запрос, который суммирует суммарные вхождения каждого номера процесса и сохраняет эти значения в новом столбце, что мне делать? Я думал, что некоторая смесь подсчета (отличная ...) могла бы снизить это, но я не уверен. Смотрите таблицу результатов для того, что я ищу.

Order_Table:

order_number     process 
         100           8
         100           7
         100           7
         100           6
         100           5
         105           6
         105           2
         105           4

Results:

order_num    NumOfEight   NumOfSeven   NumOfSix   NumOfFive  NumOfFour  NumOfTwo
      100             1            2          1           1          0         0
      105             0            0          1           0          1         1


Обновление: я использую SQL 2005 в качестве базы, но у меня есть доступ к более новым версиям. Процесс - это конечный набор значений.

Ответы [ 2 ]

2 голосов
/ 13 октября 2010

Предполагая, что SQL Server 2005+ вы можете использовать PIVOT

SELECT 
      order_num, [8] AS NumOfEight, [7] AS NumOfSeven   /* etc. etc.*/
FROM 
      (SELECT order_number AS order_num, process FROM Order_Table) p
PIVOT 
      (COUNT(process) FOR process IN ([8],[7] /* etc. etc.*/)) pvt
1 голос
/ 13 октября 2010
select order_num,
       sum(case when process = 8 then 1 else 0 end) as NumOfEight,
       sum(case when process = 7 then 1 else 0 end) as NumOfSeven,
       sum(case when process = 6 then 1 else 0 end) as NumOfSix
       /* Repeat as many times as needed */
    from Order_Table
    group by order_num
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...