tabloyu SQL Server'de döndürme

Bu makalede, SQL Server'da bir tablonun nasıl döndürüldiği açıklanır.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 175574

Özet

Bu makalede bir SQL Server tablosunun nasıl döndürüldiği açıklanır. adlı QTRSALESbir tablonuz olduğunu varsayalım. Tabloda , QUARTERve AMOUNT sütunları YEARve verileri aşağıdaki biçimdedir.

Not

1996'nın dördüncü çeyreği için satır yoktur:

Yıl Çeyrek Tutar
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

Şimdi, verileri aşağıdaki biçimde görebilmek için tabloyu döndürmek istediğinizi varsayalım:

YIL Q1 Q2 Q3 Q4
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

Tabloyu döndürmek için kullanacağınız sorgu bu makalenin sonraki bölümündedir.

Tabloyu döndürmek için örnek sorgu

Tabloyu döndürmek için kullanacağınız sorgu aşağıdadır:

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

Büyük tablolar için sorgu

Büyük tablolar için bu sorgu daha hızlı olacaktır:

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

Başvuru

FROM - PIVOT ve UNPIVOT kullanma