简体   繁体   English

枢轴SQL Server 2005

[英]Pivot SQL Server 2005

My tables: 我的桌子:

  • Introducermaster Introducermaster
  • ProjectAllocation ProjectAllocation
  • CompanyStructure 公司结构

Query: 查询:

SELECT
    Sno,
    TopEmpName,
    TopEmpID,
    HighLevel,
    CH, ED, DIR, GM, AGM, BDM, SMM,
    LowEmpID
FROM 
    (SELECT
         projectallocation.proAllocationID AS Sno,
         temp.intro_name AS TopEmpName,
         projectallocation.introtoplevelEmpid AS TopEmpID,
         temper.csshortname AS HighLevel,
         (companystructure.csshortname) AS Level,
         introducermaster.intro_name AS LowEmpName,
         projectallocation.introlevelEmpid AS LowEmpID
     FROM 
         projectallocation
     INNER JOIN 
         dbo.IntroducerMaster ON dbo.introducermaster.empid = projectallocation.introLevelEmpid
     INNER JOIN 
         introducermaster AS temp ON temp.empiD = projectallocation.introtopLevelEmpid
     INNER JOIN 
         companyStructure ON companyStructure.HLevel = projectallocation.introleveID
     INNER JOIN 
         companyStructure AS temper ON temper.Hlevel = projectallocation.introtoplevelID
     WHERE 
         projectallocation.projectID != 3
     GROUP BY 
         IntroducerMaster.Intro_Name, temp.intro_name,
         companyStructure.CSShortName,
         projectallocation.proAllocationID,
         projectallocation.introlevelEmpid,
         projectallocation.introtoplevelEmpid,
         temper.csshortname) b 
PIVOT 
    (MAX(LowEmpName) 
        FOR level IN (CH, ED, DIR, GM, AGM, BDM, SMM)) PVT
ORDER BY 
    SMM, BDM, AGM, GM, DIR, ED, CH

Output: 输出:

Sno  TopEmpName TopEmpid HighLevel  CH ED DIR GM AGM BDM  SMM LowEmpid
----------------------------------------------------------------------
1    karthi     emp01      CH    null ajju null  null null null null
1    karthi     emp01      cH    null null ramesh null null  null null

I want this result instead: 我想要这个结果:

CH      ED     DIR      GM     AGM   BDM  SMM
----------------------------------
karthi ajju,.. Ramesh,.. Some Data.........

Please help achieve this desired output 请帮助实现此期望的输出

It seems your DB is case-sensitive. 看来您的数据库区分大小写。 Convert csshortname column to UPPER or LOWER (and any other columns which would have different case) csshortname列转换为UPPERLOWER (以及任何其他大小写不同的列)

SELECT
    Sno,
    TopEmpName,
    TopEmpID,
    HighLevel,
    CH, ED, DIR, GM, AGM, BDM, SMM,
    LowEmpID
FROM 
    (SELECT
         projectallocation.proAllocationID AS Sno,
         temp.intro_name AS TopEmpName,
         projectallocation.introtoplevelEmpid AS TopEmpID,
         UPPER( temper.csshortname ) AS HighLevel,
         (companystructure.csshortname) AS Level,
         introducermaster.intro_name AS LowEmpName,
         projectallocation.introlevelEmpid AS LowEmpID
     FROM 
         projectallocation
     INNER JOIN 
         dbo.IntroducerMaster ON dbo.introducermaster.empid = projectallocation.introLevelEmpid
     INNER JOIN 
         introducermaster AS temp ON temp.empiD = projectallocation.introtopLevelEmpid
     INNER JOIN 
         companyStructure ON companyStructure.HLevel = projectallocation.introleveID
     INNER JOIN 
         companyStructure AS temper ON temper.Hlevel = projectallocation.introtoplevelID
     WHERE 
         projectallocation.projectID != 3
     GROUP BY 
         IntroducerMaster.Intro_Name, temp.intro_name,
         companyStructure.CSShortName,
         projectallocation.proAllocationID,
         projectallocation.introlevelEmpid,
         projectallocation.introtoplevelEmpid,
         temper.csshortname) b 
PIVOT 
    (MAX(LowEmpName) 
        FOR level IN (CH, ED, DIR, GM, AGM, BDM, SMM)) PVT
ORDER BY 
    SMM, BDM, AGM, GM, DIR, ED, CH

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM