2
很长一段时间听众,第一次来电者...新手SQL查询透视
我有一个表(跟踪)按照以下几点:
ID | Works Order |Activity |Status
---|----------------|-----------|------
1 | W123456789-001 |10A |GOOD
2 | W123456789-002 |10A |GOOD
3 | W123456789-003 |10A |SCRAP
4 | W123456789-001 |20A |GOOD
5 | W123456789-002 |20A |GOOD
...其中工程订单号W123456789- 001由实际工单号组成; W123456789,然后是部件号; 001.'Activites'被固定为10A,20A,30A & 110A,状态是'好的'或'碎片'。我想总结&输出它像下面这样:
Works Order |10A |20A |30A |110A
-------------|----|----|----|----
W123456789 |2 |2 |0 |0
...其中的cols 10,20,30 & 110A的数量是“良好的每个活动的次数。
我可以通过下面的代码获得大部分的方法;
select [WO_Part],[10A G],[20A G],[30A G],[110AG]
from
(
select
[Activity],
LEFT([WOPart],10) AS [WO_Part],
iIf([Status]='GOOD ',1,0) AS [STATUS],
[ACTIVITY]+LEFT([STATUS],1) AS [CONCAT]
from Tracker
) d
pivot
(
SUM([Status])
for [CONCAT] in ([10A G],[20A G],[30A G],[110AG])
) piv;
但是,我得到的每厂订单多行的结果分布在每个活动一排,象下面这样:
Works Order |10A |20A |30A |110A
-------------|----|----|----|----
W123456789 |2 |0 |0 |0
W123456789 |0 |2 |0 |0
我应该如何改变我的查询,以便将结果合并在一个单一行?
Works Order |10A |20A |30A |110A
-------------|----|----|----|----
W123456789 |2 |2 |0 |0
预先感谢您!
很好,谢谢戈登。我是SQL新手,为了跟上我的雇主的要求,正在进行自我教育。诸如你的建议非常宝贵。谢谢! – John