یادداشت های روزانه یک برنامه نویس

برنامه نویسی وب و اندروید ، برنامه نویسی با C# & JAVA، کار با پایگاه داده SQL Server

یادداشت های روزانه یک برنامه نویس

برنامه نویسی وب و اندروید ، برنامه نویسی با C# & JAVA، کار با پایگاه داده SQL Server

ساخت Pivot Table از طریق SQL Server


 ساخت Pivot Table از طریق SQL Server


نمونه کد به کار رفته برای ساخت به صورت زیر می باشد:


CREATE TABLE yt

(

  [Store] int,

  [Week] int,

  [xCount] int

);

   

INSERT INTO yt

(

  [Store],

  [Week], [xCount]

)

VALUES

    (102, 1, 96),

    (101, 1, 138),

    (105, 1, 37),

    (109, 1, 59),

    (101, 2, 282),

    (102, 2, 212),

    (105, 2, 78),

    (109, 2, 97),

    (105, 3, 60),

    (102, 3, 123),

    (101, 3, 220),

    (109, 3, 87);

   

   

DECLARE @cols AS NVARCHAR(MAX),

    @query  AS NVARCHAR(MAX)

 

select @cols = STUFF((SELECT ',' + QUOTENAME(Week)

                    from yt

                    group by Week

                    order by Week

            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')

 

set @query = 'SELECT store,' + @cols + ' from

             (

                select store, week, xCount

                from yt

            ) x

            pivot

            (

                sum(xCount)

                for week in (' + @cols + ')

            ) p '

 

execute(@query);


دستور STUFF برای حذف اولین کاما به کار می رود

دستور QUOTENAME برای اضافه کردن براکت به کار می رود.

دستور FOR XML PATH برای تبدیل به یک رشته به کار می رود


دستور کامل به صورت زیر می باشد


DECLARE @cols AS NVARCHAR(MAX),

    @query  AS NVARCHAR(MAX)

 

select @cols = STUFF((SELECT ',' + QUOTENAME(Hcol)

                    from TableName

                    group by Hcol

                    order by Hcol

            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')

 

set @query = 'SELECT Vcol,' + @cols + ' from

             (

                select Vcol, Hcol, SummeyCol

                from TableName

            ) x

            pivot

            (

                sum(SummeyCol)

                for Hcol in (' + @cols + ')

            ) p '

 

execute(@query);



 

TableName : اسم جدول

Hcol : سطح افقی یا ستونها

Vcol : سطح عمودی یا سطرها

SummeyCol : ستون محاسباتی





نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد