如何在sql server 2008R2中根据给定月份更改列名

时间:2013-07-16 06:31:43

标签: sql sql-server sql-server-2008 tsql sql-server-2008-r2

我希望根据给定日期的月份将我的数据透视表列名称显示为Monday 1Tuesday 2 ...即,如果它是7月,那么Monday 1 {{ 1}}所以这个月的所有日子...... 这是我的编码如何实现这个

Tuesday 2

我在第1天的列中尝试了这样的星期一,但它并没有开玩笑!

set @query='SELECT 
        P.tenant_id,CI.companyname,BM.brandname,bl.buildingname,T.Unitname,tm.tradecategoryname,l.locationname,T.adsrid,T.carpetarea,T.chargeablearea,
        P.[1],P.[2],P.[3],P.[4],P.[5],P.[6],P.[7],P.[8],P.[9],P.[10],P.[11],P.[12],P.[13],P.[14],P.[15],P.[16],P.[17],
        P.[18],P.[19],P.[20],P.[21],P.[22],P.[23],P.[24],P.[25],P.[26],P.[27],P.[28],P.[29],P.[30],P.[31]
        FROM
        (
        select tenant_id,Day1=day(RECEIPT_DATE),Net_Amt from Daywiseconsolidate WITH(NOLOCK)
         where tenant_id in (' + @filter + ') and month(receipt_date)='+ convert(nvarchar(2),month(@fromdate)) +' and year(receipt_date)='+convert(nvarchar(4),year(@fromdate))+'
    ) A 
    PIVOT 
    (
    SUM(NET_AMT) 
    FOR DAY1 IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],
    [18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31])
    ) AS P
    inner join tenant T on P.tenant_id=T.adsrid
    left outer join locationmaster l on t.locationId=l.locationId
    left outer join companyinfo CI on T.companyid=CI.companyid
    left outer join brandmaster BM on T.brandid=BM.brandid
    left outer join buildingmaster bl on t.buildingid=bl.buildingid
    left outer join tradecategorymaster tm on T.tradecategory=tm.tradecategoryid 
    where bl.active=''Y'' and tm.active=''Y'''

你能不能帮我找到那些想要的栏目

1 个答案:

答案 0 :(得分:0)

你应该生成动态的sql pivot查询,有很多类似的问题:

Dynamic SQL to generate column names?