COUNT & PRINT соответствуют значениям строк в НОВЫХ КОЛОННАХ - PullRequest
0 голосов
/ 28 января 2019

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

SELECT id
, Name
, Designation 
, DeptName
, Sts
, COUNT(Sts) as 'COUNT'
FROM table
WHERE Date >= DATEADD(month,-1,GETDATE())
AND Name = 'Neo'
GROUP BY id, Name, Designation, DeptName, Sts
ORDER id

Вот мой вывод

Требуется вывод ...

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Как и предполагалось ранее, используйте пивот

WITH temp AS(
SELECT 1 AS id,'Neo' AS name,'Zonal Manager' AS designation, 'Admin' AS deptname, 'H' AS sts ,2 AS cnt FROM dual UNION ALL
SELECT 1,'Neo','Zonal Manager', 'Admin', 'A',3 FROM dual UNION ALL
SELECT 1,'Neo','Zonal Manager', 'Admin', 'P',4 FROM dual UNION ALL
SELECT 1,'Neo','Zonal Manager', 'Admin', 'A',1 FROM dual UNION ALL
SELECT 1,'Neo','Zonal Manager', 'Admin', 'A',8 FROM dual )
SELECT p.*
FROM   temp
PIVOT(
       SUM(cnt)
       FOR sts 
       IN  ('A', 'P', 'H')
     ) p
0 голосов
/ 28 января 2019

использовать условное агрегирование

    SELECT id
    , Name
    , Designation 
    , DeptName        
    , sum (case when Sts='H' then 1 end) H
,sum (case when Sts='A' then 1 end) A
,sum (case when Sts='P' then 1 end)  P
    FROM table
    WHERE Date >= DATEADD(month,-1,GETDATE())
    AND Name = 'Neo'
    GROUP BY id, Name, Designation, DeptName
    ORDER id

Оператор CASE проходит через условия и возвращает значение, когда первое условие выполнено (например, оператор IF-THEN-ELSE) и когда условие будет выполнено, оно будет суммироватьсяна это конкретное значение

...