枢轴 SQL 服务器 2005
Pivot SQL Server 2005
我的桌子:
- 介绍大师
- 项目分配
- 公司结构
查询:
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
输出:
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
我想要这个结果:
CH ED DIR GM AGM BDM SMM
----------------------------------
karthi ajju,.. Ramesh,.. Some Data.........
请帮助实现这个期望的输出
您的数据库似乎区分大小写。将 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
我的桌子:
- 介绍大师
- 项目分配
- 公司结构
查询:
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
输出:
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
我想要这个结果:
CH ED DIR GM AGM BDM SMM
----------------------------------
karthi ajju,.. Ramesh,.. Some Data.........
请帮助实现这个期望的输出
您的数据库似乎区分大小写。将 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