Я видел, как вы редактировали свой вопрос.
Вы можете попробовать использовать агрегатную функцию условия с UNION ALL
CREATE TABLE T(
Name varchar(50),
A int,
B int,
C int,
D int,
E int,
F int,
G int
);
INSERT INTO T VALUES ('FYQ1',11,10,8 ,6,1,0,0);
INSERT INTO T VALUES ('FYQ2',11,10,8 ,7,2,0,0);
INSERT INTO T VALUES ('FYQ3',11,11,11,10,5,4,0);
INSERT INTO T VALUES ('FYQ4',11,11,11,10,5,4,0);
Запрос 1 :
SELECT 'A' as " ",
MAX(CASE WHEN NAME = 'FYQ1' THEN A END) FYQ1,
MAX(CASE WHEN NAME = 'FYQ2' THEN A END) FYQ2,
MAX(CASE WHEN NAME = 'FYQ3' THEN A END) FYQ3,
MAX(CASE WHEN NAME = 'FYQ4' THEN A END) FYQ4
FROM T
UNION ALL
SELECT 'C',
MAX(CASE WHEN NAME = 'FYQ1' THEN C END),
MAX(CASE WHEN NAME = 'FYQ2' THEN C END),
MAX(CASE WHEN NAME = 'FYQ3' THEN C END),
MAX(CASE WHEN NAME = 'FYQ4' THEN C END)
FROM T
UNION ALL
SELECT 'D',
MAX(CASE WHEN NAME = 'FYQ1' THEN D END),
MAX(CASE WHEN NAME = 'FYQ2' THEN D END),
MAX(CASE WHEN NAME = 'FYQ3' THEN D END),
MAX(CASE WHEN NAME = 'FYQ4' THEN D END)
FROM T
UNION ALL
SELECT 'E',
MAX(CASE WHEN NAME = 'FYQ1' THEN E END),
MAX(CASE WHEN NAME = 'FYQ2' THEN E END),
MAX(CASE WHEN NAME = 'FYQ3' THEN E END),
MAX(CASE WHEN NAME = 'FYQ4' THEN E END)
FROM T
UNION ALL
SELECT 'F',
MAX(CASE WHEN NAME = 'FYQ1' THEN F END),
MAX(CASE WHEN NAME = 'FYQ2' THEN F END),
MAX(CASE WHEN NAME = 'FYQ3' THEN F END),
MAX(CASE WHEN NAME = 'FYQ4' THEN F END)
FROM T
UNION ALL
SELECT 'G',
MAX(CASE WHEN NAME = 'FYQ1' THEN G END),
MAX(CASE WHEN NAME = 'FYQ2' THEN G END),
MAX(CASE WHEN NAME = 'FYQ3' THEN G END),
MAX(CASE WHEN NAME = 'FYQ4' THEN G END)
FROM T
Результаты :
| | FYQ1 | FYQ2 | FYQ3 | FYQ4 |
|---|------|------|------|------|
| A | 11 | 11 | 11 | 11 |
| C | 8 | 8 | 11 | 11 |
| D | 6 | 7 | 10 | 10 |
| E | 1 | 2 | 5 | 5 |
| F | 0 | 0 | 4 | 4 |
| G | 0 | 0 | 0 | 0 |