[英]Pivot SQL Server 2005
My tables: 我的桌子:
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
列转换为UPPER
或LOWER
(以及任何其他大小写不同的列)
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.