我认为我需要的是创建一个数据透视表。我可以在没有劳动时间列的情况下完成,但是当我尝试使用劳动时间列创建它时,它不起作用。
请您告诉我如何获得我要求的结果?
还有多个“Par”值,下面没有显示。
这是我的表:
WorkDate Par QTY laborhrs
03/14/14 CR 100 0.67
03/25/14 ET 100 0.73
03/05/14 CR 50 0.37
03/13/14 ER 50 0.72
03/04/14 YD 400 1.68
03/25/14 CR 200 0.8
03/25/14 CR 300 1.5
这就是我想要的:
WorkDate CR CRHours ER ERHours ET ETHours YD YDHours
03/04/14 0 0 0 0 0 0 400 1.68
03/05/14 50 0.37 0 0 0 0 0 0
03/13/14 0 0 50 0.72 0 0 0 0
03/14/14 100 0.67 0 0 0 0 0 0
03/25/14 500 2.3 0 0 100 0.73 0 0
新的“小时”列来自每个“par”的劳动者列
答案 0 :(得分:1)
有多种方法 您可以创建两个PIVOT子查询并加入它们,但我更喜欢这种方式
SELECT
t.WorkDate
,SUM(CASE WHEN t.Par='CR' THEN t.Qty ELSE 0 END) AS CR
,SUM(CASE WHEN t.Par='CR' THEN t.laborhrs ELSE 0 END) AS CRHours
,SUM(CASE WHEN t.Par='ER' THEN t.Qty ELSE 0 END) AS ER
,SUM(CASE WHEN t.Par='ER' THEN t.laborhrs ELSE 0 END) AS ERHours
,SUM(CASE WHEN t.Par='ET' THEN t.Qty ELSE 0 END) AS ET
,SUM(CASE WHEN t.Par='ET' THEN t.laborhrs ELSE 0 END) AS ETHours
,SUM(CASE WHEN t.Par='YD' THEN t.Qty ELSE 0 END) AS YD
,SUM(CASE WHEN t.Par='YD' THEN t.laborhrs ELSE 0 END) AS YDHours
GROUP BY t.WorkDate
FROM [tablename] t
我发现这是解决这些问题的最快方法,因为它只需要遍历一次。
答案 1 :(得分:0)
另一个选项是相关查询:
select workdate,
(select sum(qty) from labour a where a.workdate=b.workdate and a.par='CR') CR,
(select sum(laborhrs) from labour a where a.workdate=b.workdate and a.par='CR') CRhours,
(select sum(qty) from labour a where a.workdate=b.workdate and a.par='ER') ER,
(select sum(laborhrs) from labour a where a.workdate=b.workdate and a.par='ER') ERhours,
(select sum(qty) from labour a where a.workdate=b.workdate and a.par='ET') ET,
(select sum(laborhrs) from labour a where a.workdate=b.workdate and a.par='ET') EThours,
(select sum(qty) from labour a where a.workdate=b.workdate and a.par='YD') YD,
(select sum(laborhrs) from labour a where a.workdate=b.workdate and a.par='YD') YDhours
from yourtable b
group by workdate