Лучший способ сделать подсчет в TSQL - PullRequest
0 голосов
/ 03 сентября 2018

Я не очень хорош в TSQL и хочу написать отчет следующим образом:

вход: таблица A

ID   Company Product  Flag
1    A        Car        Y
2    A        Van        N
3    B        Van        Y
4    A        Part       N

выход

Company     Y     N
A           1     2
B           1     0

если можно помочь в TSQL ...

Ответы [ 4 ]

0 голосов
/ 03 сентября 2018

Вы можете использовать выражения CASE (люди называют это " условное агрегирование ") для подсчета помеченных продуктов для каждого клиента, как это (что будет игнорировать запись, когда столбец Product пуст) :

SELECT Company
  , COUNT(CASE Flag WHEN 'Y' THEN Product END) AS Y
  , COUNT(CASE Flag WHEN 'N' THEN Product END) AS N
FROM YourTable
GROUP BY Company;

Или вы можете использовать этот запрос PIVOT, который является краткой формой написания выше:

SELECT Company, Y, N
FROM (SELECT Company, Product, Flag FROM YourTable) AS src
PIVOT (COUNT(Product) FOR Flag IN (Y, N)) AS pvt;
0 голосов
/ 03 сентября 2018

Вы ищете условное агрегирование:

select company,
       sum(case when flag = 'Y' then 1 else 0 end) as num_y,
       sum(case when flag = 'N' then 1 else 0 end) as num_n
from t
group by company;
0 голосов
/ 03 сентября 2018

вариант использования, когда

    select company,
   sum(case when flag='Y' then 1 else 0 end) as Y,
   sum(case when flag='N' then 1 else 0 end) as N from tabe_data
   group by company
0 голосов
/ 03 сентября 2018

Вы можете использовать условное агрегирование:

SELECT Company
    ,SUM(CASE WHEN Flag = 'Y' THEN 1 ELSE 0 END) AS Y
    ,SUM(CASE WHEN Flag = 'N' THEN 1 ELSE 0 END) AS N
FROM tab
GROUP BY Company
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...