Quantcast
Channel: CodeFari
Viewing all articles
Browse latest Browse all 265

Dynamic PIVOT query in SQL Server

$
0
0
Problem: Suppose we have a table TMP where we keep the data of Representatives like RepName, NumberOfLead, Date etc. as below
 












Now we have to show data like below.
  





Answer: Very easy we can use PIVOT function but it may create a problem when we add new Representative. We have to change our Procedure whena new representative will be add. Don't worry one solution is here we can use PIVOT in dynamic query like below.
CREATETABLE#TMP
(
       REPNAMEVARCHAR(100),
       NUMBEROFLEADINT,
       DATEDATETIME
)

INSERTINTO#TMP
SELECT'DILIP',2,'11/11/2015'
UNIONALL
SELECT'ANIL',4,'11/11/2015'
UNIONALL
SELECT'PARAM',7,'11/11/2015'
UNIONALL
SELECT'DILIP',6,'11/12/2015'
UNIONALL
SELECT'ANIL',3,'11/12/2015'
UNIONALL
SELECT'PARAM',5,'11/12/2015'

SELECT*FROM#TMP
DECLARE@COLSASNVARCHAR(MAX),
    @QUERY  ASNVARCHAR(MAX);

SET@COLS=STUFF((SELECTDISTINCT','+QUOTENAME(TMP.REPNAME)
            FROM#TMPTMP
            FORXMLPATH(''),TYPE
            ).value('.','NVARCHAR(MAX)')
        ,1,1,'')

SET@QUERY='SELECT DATE, '+@COLS+' FROM
            (
                SELECT REPNAME
                    , NUMBEROFLEAD
                    , DATE
                FROM #TMP
           ) X
            PIVOT
            (
                 MAX(NUMBEROFLEAD)
                FOR REPNAME IN ('+@COLS+')
            ) P '


EXECUTE(@QUERY)

DROPTABLE#TMP

This query will return result as above given pic..
Now you can try this with adding new representative as below

SELECT'MANISH',5,'11/12/2015'

Viewing all articles
Browse latest Browse all 265

Trending Articles