Msg 325, Level 15, State 1, Line 5
Incorrect syntax near 'PIVOT'. You may need to set the compatibility level of the current database to a higher value to enable this feature. See help for the stored procedure sp_dbcmptlevel.
Yukardaki hatayı alıyorsanız ve
Microsoft SQL 2005 versiyonunda veritabanı uyumluluğu 90 değerinin altında ise;
Database değeri single moda alınır
ALTER DATABASE AdventureWorks
SET SINGLE_USER
GO
Sonra
EXEC sp_dbcmptlevel AdventureWorks, 90;
GO
En son ise tekrar multi user moda alınır.
ALTER DATABASE AdventureWorks
SET MULTI_USER
GO
SQL Server versiyonu 2005 ve üzeri ise 90 değerine ayarlamak için bu sefer
ALTER DATABASE AdventureWorks SET COMPATIBILITY_LEVEL=90
yapılır.
Örnek Pivot uygulaması (Ambar toplamları):
USE XXXX
go
select stokkodu, stokadi, [ÇİNKO],[FASGEL],[FOSFAT],[MALKABUL],[MANGAN],[REDMK] from XXXX ) tablom
PIVOT (
sum(kalan)
FOR AmbarNo IN ([ÇİNKO],[FASGEL],[FOSFAT],[MALKABUL],[MANGAN],[REDMK])
) PivotToplam
WHERE StokKodu='732740'
ORDER BY stokkodu
go
select stokkodu, stokadi, [ÇİNKO],[FASGEL],[FOSFAT],[MALKABUL],[MANGAN],[REDMK] from XXXX ) tablom
PIVOT (
sum(kalan)
FOR AmbarNo IN ([ÇİNKO],[FASGEL],[FOSFAT],[MALKABUL],[MANGAN],[REDMK])
) PivotToplam
WHERE StokKodu='732740'
ORDER BY stokkodu
Unpivot örneği ise ambarlar satırda gösterilebilir.
farklı bir örnek verelim bunun için;
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,
Emp3 int, Emp4 int, Emp5 int);
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4);
INSERT INTO pvt VALUES (2,4,1,5,5,5);
INSERT INTO pvt VALUES (3,4,3,5,4,4);
INSERT INTO pvt VALUES (4,4,2,5,5,4);
INSERT INTO pvt VALUES (5,5,1,5,5,5);
GO
--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM
(SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
FROM pvt) p
UNPIVOT
(Orders FOR Employee IN
(Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt;
GO
Emp3 int, Emp4 int, Emp5 int);
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4);
INSERT INTO pvt VALUES (2,4,1,5,5,5);
INSERT INTO pvt VALUES (3,4,3,5,4,4);
INSERT INTO pvt VALUES (4,4,2,5,5,4);
INSERT INTO pvt VALUES (5,5,1,5,5,5);
GO
--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM
(SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
FROM pvt) p
UNPIVOT
(Orders FOR Employee IN
(Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt;
GO