TSQL-запрос для получения помеченных / итоговых строк - PullRequest
1 голос
/ 13 февраля 2012

Я изо всех сил пытаюсь найти решение следующей проблемы. Предположим, у кого-то есть такая таблица

 COL1 FLAG 
 aaa  1
 aaa  0
 aaa  1
 bbb  0

Мне нужно написать запрос, чтобы получить следующий вывод:

COL1_VALUE FLAGGED TOTAL
aaa        2       3
bbb        0       1

где столбец FLAGGED содержит общее количество значений строки 'aaa', для которых FLAG = 1, а столбец TOTAL - общее количество строк, содержащих 'aaa', другими словами, найти, сколько строк, содержащих 'aaa', помечено по отношению к общему количеству строк, содержащих «ааа». Возможно ли это с помощью одного запроса? (т.е. без использования временных таблиц и т. д.)

(MSSQL2008)

Ответы [ 3 ]

5 голосов
/ 13 февраля 2012
SELECT COL1 AS COL1_VALUE,
       COUNT(CASE WHEN FLAG = 1 THEN 1 END) AS FLAGGED,
       COUNT(*) AS TOTAL
FROM YourTable
GROUP BY COL1 
4 голосов
/ 13 февраля 2012
SELECT COL1, SUM(FLAG) AS FLAGGED, Count(*) AS TOTAL from tbl GROUP BY COL1
0 голосов
/ 13 февраля 2012
SELECT    Tab.COL1 AS COL1_VALUE,
          SUM(CASE WHEN Tab.FLAG = 1 THEN 1 ELSE 0 END) AS FLAGGED,
          COUNT(*) AS TOTAL
FROM      Tab
GROUP BY  Tab.COL1 
...