PDA

View Full Version : سوال: كاربرد Pivot بدون تعيين صريح ستونهاي خروجي در جلوي IN



A.Farzin
دوشنبه 13 دی 1389, 14:53 عصر
با سلام
براي استفاده از PIVOT بايد نام ستونهاي خروجي Pivot را جلوي IN به شكل داخل براكت و بطور صريح عنوان كرد.
اين كار مستلزم اطلاع از مقادير داده‌ها در ستون لولا بوده و اگر تعداد داده‌ها زياد باشد و نخواهيم اين مقادير را ابتدا مشخص كرده و سپس دستور Pivot را بنويسيم، آيا راهي هست كه تعداد ستون خروجي و عنوان آنرا خود SQL تشخيص دهد؟
متشكرم

AminSobati
دوشنبه 13 دی 1389, 21:53 عصر
سلام دوست عزیزم،
چیزی که مد نظر شماست معروفه به Dynamic Pivot و با Dynamic TSQL امکان پذیره:



use northwind
go
declare @x nvarchar(2000)
set @x=''
select @x=@x+country+',' from customers group by country
set @x=LEFT(@x,len(@x)-1)

exec ('SELECT * FROM
(SELECT Country,CustomerID FROM Customers) tmp
PIVOT (COUNT(CustomerID) FOR Country
IN ('+ @x+')) AS pt')