Özet
Bu makalede, SQL Server tablosunu döndürme yöntemi açıklanır. Qtrsatışlaradlı bir tablonuz olduğunu varsayalım. Tabloda, Şu biçimdeki verileri içeren yıl, üç aylık dönem ve tutar (1996 'in dördüncü çeyreği için satır yok): Year Quarter 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 Şimdi, verileri aşağıdaki biçimde görebilmeniz için tabloyu döndürmek istediğinizi varsayalım: YEAR 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üdür.
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 sorgulama
Büyük tablolar için bu sorgu daha hızlı olacaktır:
year=q.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 Q4FROM qtrsales qGROUP BY year