Raj 0203 Ответов: 2

У меня есть вывод запроса, и я хочу небольшое изменение в выводе, может ли кто-нибудь помочь.?


Привет ребята,

У меня есть такой вывод запроса,
-------------------------
Status	   PP	AR	BL	EN
Active	   3	2	2	1
In-Active	1	2	2	3

------------------
Но я хочу, чтобы результат был таким,
Status    Total PP AR BL EN
Active    8     3   2  2  1
In-Active 8     1   2  2  3


Любая помощь будет оценена по достоинству.

Примечание: здесь столбец "всего" - это сумма всех команд.

Что я уже пробовал:

SELECT status, [PP],[AR],[BL], [EN] FROM
(SELECT status, team FROM tablename) as src
PIVOT
(
   COUNT(team) FOR team IN ([PP],[AR],[BL], [EN])
) AS output

Maciej Los

Вы очень близки. Пожалуйста, посмотрите мой ответ.

2 Ответов

Рейтинг:
2

Maciej Los

Другой способ (альтернатива Петр Leow[^]) есть:

SELECT status, [PP]+[AR]+[BL]+[EN] AS Total, [PP], [AR], [BL], [EN]
FROM (
    SELECT status, [PP],[AR],[BL], [EN]
    FROM (
        SELECT status, team FROM tablename
        ) as src
    PIVOT (COUNT(team) FOR team IN ([PP],[AR],[BL], [EN])) AS output
) AS Final


Рейтинг:
19

Peter Leow

Используйте таблицу CTE, чтобы получить количество каждого статуса, а затем соедините ее с исходной таблицей для pivot, т. е.:

WITH CTETABLE (status, total) as
(
    SELECT status, count(status) from tablename group by status
    
) SELECT status, total, [PP],[AR],[BL], [EN] FROM
(SELECT c.status, c.total, team FROM tablename t join CTETABLE c on t.status=c.status) as src
PIVOT
(
   COUNT(team) FOR team IN ([PP],[AR],[BL], [EN])
) AS output


Bryian Tan

приятно!!!

Maciej Los

5ед!

Raj 0203

Не-а!.. Это не работает для меня, так как дает такой результат, как,

Общая информация ПП АР бл ванной
Активный 10 2 0 0 0
In-Active 7 2 0 0 0
--------
Пожалуйста, Помогите..

Peter Leow

Да, это работает. Помогите себе, проверив данные таблицы.

Raj 0203

Спасибо, это прекрасно.

Karthik_Mahalingam

5