Tek Kolonu İki Kolon Olarak Özetlemek
Bazı durumlarda sorgulanacak tabloda bir kolon üzerindeki değere göre iki kolon türetme ihtiyacımız olabilir. Bu tek kolon genelde iki değer alır.(0,1 gibi). Örneklendirmek gerekirse, tabloda bulanan bir kolonda eğer değer 0 ise ödeme yapılmamış 1 ise ödeme yapılmış, eğer değer ‘T‘ ise taksitli satış eğer ‘P‘ ise peşin satış gibi kolonda bulunan flag ayrımına göre verileri özetleyebiliriz. Taksitli satış miktarı, Peşin satış miktarı gibi kolonlara parçalayabiliriz.Aslında miktar kolonu tek olmasına rağmen flag kolondaki değere göre 2 veya daha fazla kolona parçalayıp verilerimizi listeleyebiliriz. Ben yapmış olduğum örneğimde satış tipi kolonuna göre eğer hücre değeri ‘T‘ ise taksitli, ‘P‘ ise peşin satış olarak parçalayacağım.
Oluşturmuş olduğum tablo scripti:
[sql]
CREATE TABLE [dbo].[tblSales](
[ID] [int] IDENTITY(1,1) NOT NULL,
[SaleType] [nvarchar](5) NULL,
[SaleQty] [int] NULL,
[SaleYear] [date] NULL,
CONSTRAINT [PK_tblSales] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
[/sql]
Tablomda bulunan veriler:
Verilerin özetlenmiş hali:
[sql]
SELECT
SatisYili=YEAR(SaleYear),
PesinSatisMiktari=SUM(IIF(SaleType=’P’,SaleQty,0)),
TaksitliSatisMiktari=SUM(IIF(SaleType=’T’,SaleQty,0))
FROM tblSales
GROUP BY SaleYear
[/sql]
Not: IIF fonksiyonu Sql Server 2012 tarafından desteklenmektedir. Alt versiyonlar için Case When yapılarını kullanabilirsiniz.