PDA

View Full Version : dynamic pivot



roxe77
پنج شنبه 21 شهریور 1392, 00:42 صبح
کسی میتونه کمکم کنه فکر کنم واضح باشه سولم تو عکس
110502

khorsandreza
پنج شنبه 21 شهریور 1392, 11:41 صبح
سلام
من در ساختن جداول pivot با اسکیوال مشک دارم لذا از یک حقه استفاده میکنم جداول را در اکسس ایجاد میکنم جون اکسس گزنه به نام Crosstable با تولید و کدهایش را به اسکیوال می برم
کوئری جدول شما تقریبا به شکل زیر میشه

TRANSFORM Sum(Table1.tedad) AS SumOftedad
SELECT Table1.gridcode
FROM Table2 INNER JOIN Table1 ON Table2.id = Table1.parnt
GROUP BY Table1.gridcode
PIVOT Table2.kalaname;

lastmory
پنج شنبه 21 شهریور 1392, 13:31 عصر
با سلام
اینو یه تست بزن
این Pivot داینامیک برای N تا کالا جواب میده

DECLARE @x As NVarchar(MAX)
Set @x=''
select @x=@x+'['+ ItemName +']'+',' from Tbl_Kala group by ItemName ORDER BY ItemName ASC
set @x=LEFT(@x,len(@x)-1)
EXEC('
Select * From(Select A.GridCode ,K.ItemName ,A.Point From Tbl_Grid A
INNER JOIN TBL_Kala K ON K.Id = A.ItemId )W
PIVOT( Max(Point) For ItemName In( '+@x+' ))As Ts')

اینم Pivot به صورت Static فقط برای این تعداد کالا جواب میده

Select * From(Select A.GridCode ,K.ItemName ,A.Point From Tbl_Grid A
INNER JOIN TBL_Kala K ON K.Id = A.ItemId )W
PIVOT( Max(Point) For ItemName In( [Kala1],[Kala2],[Kala3],[Kala4] ))As Ts