Смена таблицы в SQL Server
В этой статье описывается, как повернуть таблицу в SQL Server.
Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 175574
Сводка
В этой статье описывается, как повернуть таблицу SQL Server. Предположим, что у вас есть таблица с именем QTRSALES
. Таблица содержит столбцы YEAR
, QUARTER
и AMOUNT
с данными в следующем формате.
Примечание.
За четвертый квартал 1996 года нет строки:
Year | Квартал | Amount |
---|---|---|
1995 | 1 | 125,000.90 |
1995 | 2 | 136,000.75 |
1995 | 3 | 212,000.34 |
1995 | 4 | 328,000.82 |
1996 | 3 | 728,000.35 |
1996 | 2 | 422,000.13 |
1996 | 1 | 328,000.82 |
Теперь предположим, что вы хотите повернуть таблицу, чтобы увидеть данные в следующем формате:
YEAR | Q1 | В 2-й квартал | В3 | Вопрос 4 |
---|---|---|---|---|
1995 | 125,000.90 | 136,000.75 | 212,000.34 | 328,000.82 |
1996 | 328,000.82 | 422,000.13 | 728,000.35 | 0.00 |
Запрос, который будет использоваться для смены таблицы, приведен в следующем разделе этой статьи.
Пример запроса для смены таблицы
Ниже приведен запрос, используемый для смены таблицы:
SELECT YEAR,
Q1= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 1 AND YEAR =
Q.YEAR),0),
Q2= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 2 AND YEAR =
Q.YEAR),0),
Q3= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 3 AND YEAR =
Q.YEAR),0),
Q4= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 4 AND YEAR =
Q.YEAR),0)
FROM QTRSALES Q
GROUP BY YEAR
Запрос больших таблиц
Для больших таблиц этот запрос будет выполняться быстрее:
SELECT YEAR,
SUM(CASE quarter WHEN 1 THEN amount ELSE 0 END) AS Q1,
SUM(CASE quarter WHEN 2 THEN amount ELSE 0 END) AS Q2,
SUM(CASE quarter WHEN 3 THEN amount ELSE 0 END) AS Q3,
SUM(CASE quarter WHEN 4 THEN amount ELSE 0 END) AS Q4
FROM qtrsales q
GROUP BY YEAR
Справочные материалы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по