Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób obracania tabeli w programie SQL Server.
Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 175574
Podsumowanie
W tym artykule opisano sposób obracania tabeli programu SQL Server. Załóżmy, że masz tabelę o nazwie QTRSALES
. Tabela zawiera kolumny YEAR
, QUARTER
i AMOUNT
z danymi w następującym formacie.
Uwaga 16.
W czwartym kwartale 1996 r. nie ma wiersza:
Year (Rok) | Ćwiartkowy | Kwota |
---|---|---|
1995 | 1 | 125,000.90 |
1995 | 2 | 136,000.75 |
1995 | 3 | 212,000.34 |
1995 | 100 | 328,000.82 |
1996 | 3 | 728,000.35 |
1996 | 2 | 422,000.13 |
1996 | 1 | 328,000.82 |
Teraz załóżmy, że chcesz obrócić tabelę, aby wyświetlić dane w następującym formacie:
YEAR | Q1 | Q2 | P3 | P4 |
---|---|---|---|---|
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 |
Zapytanie używane do obracania tabeli znajduje się w następnej sekcji tego artykułu.
Przykładowe zapytanie do obracania tabeli
Oto zapytanie, którego można użyć do rotacji tabeli:
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
Wykonywanie zapytań dotyczących dużych tabel
W przypadku dużych tabel to zapytanie będzie szybsze:
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