Транспонировать заголовки строк SQL в первый столбец - PullRequest
0 голосов
/ 14 ноября 2018

Какой самый короткий, быстрый и простой способ перенести результаты запроса ниже?Я хочу, чтобы 0-3 и 3-6 показывались в первом столбце.Извините, но это одна из тех вещей, которые потрясут меня на несколько дней, если я не протяну руку.Заранее спасибо.

SELECT SUM (CASE WHEN CMAPR BETWEEN 0 AND 3 THEN 1 ELSE 0 END) AS [0-3],
       SUM (CASE WHEN CMAPR BETWEEN 3.01 AND 6 THEN 1 ELSE 0 END) AS [3-6]
FROM TBL

enter image description here

Текущие результаты:

1 Ответ

0 голосов
/ 14 ноября 2018

Использование агрегации:

SELECT (CASE WHEN CMAPR >= 0 AND CMAPR <=3 THEN '0-3'
             WHEN CMAPR <= 6 THEN '3-6'
             ELSE 'Other'
        END) AS grp, COUNT(*)
FROM tbl
GROUP BY (CASE WHEN CMAPR >= 0 AND CMAPR <=3 THEN '0-3'
               WHEN CMAPR <= 6 THEN '3-6'
               ELSE 'Other'
          END);

Единственным недостатком является то, что это не вернет группу, если в ней нет строк.

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

SELECT v.*
FROM (SELECT SUM (CASE WHEN CMAPR BETWEEN 0 AND 3 THEN 1 ELSE 0 END) AS [0-3],
             SUM (CASE WHEN CMAPR BETWEEN 3.01 AND 6 THEN 1 ELSE 0 END) AS [3-6]
      FROM TBL
     ) x CROSS APPLY
     (VALUES ('[0-3]', [0-3]), ('[3-6]', [3-6])) v(which, val);
...