Sql 查询表,以便合并结果并按行返回
我需要为报表提取数据,以便列数据现在是行数据:Sql 查询表,以便合并结果并按行返回,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我需要为报表提取数据,以便列数据现在是行数据: empID planID coverage ----- ------ -------- 15 1 100 15 11 200 15 12 NULL 15 13 500 20 1 100 20 11 250 20 12 400 20 13 NULL 变成: emp Basic Sup
empID planID coverage
----- ------ --------
15 1 100
15 11 200
15 12 NULL
15 13 500
20 1 100
20 11 250
20 12 400
20 13 NULL
变成:
emp Basic Supplemental Spouse Dependent
--- ----- ------------ ------ ---------
15 100 200 500
20 100 250 400
我尝试过各种连接,best case scenerio得到了4倍的结果,因为它对前一个表中的每一行重复
SELECT DISTINCT
CASE benefitSelected.planID WHEN 1 THEN benefitSelected.coverageLev END AS Basic,
CASE benefitSelected_1.planID WHEN 11 THEN benefitSelected_1.coverageLev END AS Supplemental,
CASE benefitSelected_2.planID WHEN 12 THEN benefitSelected_2.coverageLev END AS Spouse,
CASE benefitSelected_3.planID WHEN 13 THEN benefitSelected_3.coverageLev END AS Dependent
FROM benefitSelected AS benefitSelected_3
FULL OUTER JOIN benefitSelected AS benefitSelected_2 ON benefitSelected_3.empID = benefitSelected_2.empID
FULL OUTER JOIN benefitSelected AS benefitSelected_1 ON benefitSelected_2.empID = benefitSelected_1.empID
FULL OUTER JOIN benefitSelected
RIGHT OUTER JOIN employee ON benefitSelected.empID = employee.empID
ON benefitSelected_1.empID = benefitSelected.empID
我做错了什么?我如何得到我想要的结果
谢谢你的关注
编辑:
下面是透视查询的结果
-- -------- --------- ---- --------
1 10000.00 NULL NULL NULL
1 NULL 0.00 NULL NULL
1 NULL NULL 0.00 NULL
1 NULL NULL NULL 0.00
8 10000.00 NULL NULL NULL
8 NULL 100000.00 NULL NULL
8 NULL NULL 0.00 NULL
8 NULL NULL NULL 10000.00
应该是:
-- -------- --------- ---- --------
1 10000.00 0.00 0.00 0.00
8 10000.00 100000.00 0.00 10000.00
查询返回:
empID Basic Supplemental Spouse Dependent
15 100 200 NULL 500
20 100 250 400 NULL
查询返回:
empID Basic Supplemental Spouse Dependent
15 100 200 NULL 500
20 100 250 400 NULL
为什么不在SQLServer中使用透视表呢。检查示例非常好的建议,谢谢!我仍然有四行…这是最初的问题…是代码吗?从benefitSelected pivot中选择empID、levID、[1]、[11]、[12]、[13]([1]、[11]、[12]、[13])中的planID的计数(coverageLev)作为PlantType您可以通过结果吗getting@EmmanuelN无法获取格式以粘贴评论,因此已在原始问题中发布。结果与原始查询的结果相似。(标题如下:empID,1,11,12,13)谢谢。为什么不在SQLServer中使用透视表呢。检查示例非常好的建议,谢谢!我仍然有四行…这是最初的问题…是代码吗?从benefitSelected pivot中选择empID、levID、[1]、[11]、[12]、[13]([1]、[11]、[12]、[13])中的planID的计数(coverageLev)作为PlantType您可以通过结果吗getting@EmmanuelN无法获取格式以粘贴评论,因此已在原始问题中发布。结果与原始查询的结果相似。(标题如下:empID,1,11,12,13)谢谢。