我写的以下查询正在努力。我发现的问题是每个泵,电缆等都可以在每个零件列中列出。例如:
cross-browser compatibility explained
我想得到的是每个泵,电缆等都列好的,而不是我目前得到的,这只是第一个泵,电缆等。
这是我正在运行的查询:
Pull Date| Well_Name | BODH1 | BODH1_PN | BODH1_SN | BODH2 | BODH2_PN | BODH2_SN
以下是我目前收到的一个例子:
我对SQL Server PIVOT不是很熟悉,或者在这种情况下甚至需要它。
我感谢您提供的任何帮助,并提前感谢您。
编辑:
不幸的是我无法添加我想要的图片,所以我会尝试解释它。
我想将它全部放在一行,所以看起来有点像这样:
@objc
泵,电缆,MLE等也会重复。我有20个部分的列,我想拉它们,所以我可以轻松地将pump1排序通过泵5(有些井有5个更少)。最终,这些数据将被插入到另一个表中以进行更新。
答案 0 :(得分:1)
我将调查Dynamic Pivot以供日后使用,但这解决了我的问题(是的,它非常无聊和丑陋):
Select Pull_Date, Well_Name,
MIN(CASE WHEN Part1 ='BODH' THEN 'BODH' ELSE NULL END) [BODH1],
MIN(CASE WHEN Part1 ='BODH' THEN Part1_PN Else NULL END) BODH1_PN,
MIN(CASE WHEN Part1 ='BODH' THEN Part1_SN ELSE NULL END) BODH1_SN,
MIN(CASE WHEN Part2 ='BODH' THEN 'BODH' ELSE NULL END) [BODH2],
MIN(CASE WHEN Part2 ='BODH' THEN Part2_PN Else NULL END) BODH2_PN,
MIN(CASE WHEN Part2 ='BODH' THEN Part2_SN ELSE NULL END) BODH2_SN,
MIN(CASE WHEN Part3 ='BODH' THEN 'BODH' ELSE NULL END) [BODH3],
MIN(CASE WHEN Part3 ='BODH' THEN Part3_PN Else NULL END) BODH3_PN,
MIN(CASE WHEN Part3 ='BODH' THEN Part3_SN ELSE NULL END) BODH3_SN,
MIN(CASE WHEN Part4 ='BODH' THEN 'BODH' ELSE NULL END) [BODH4],
MIN(CASE WHEN Part4 ='BODH' THEN Part4_PN Else NULL END) BODH4_PN,
MIN(CASE WHEN Part4 ='BODH' THEN Part4_SN ELSE NULL END) BODH4_SN,
MIN(CASE WHEN Part5 ='BODH' THEN 'BODH' ELSE NULL END) [BODH5],
MIN(CASE WHEN Part5 ='BODH' THEN Part5_PN Else NULL END) BODH5_PN,
MIN(CASE WHEN Part5 ='BODH' THEN Part5_SN ELSE NULL END) BODH5_SN,
MIN(CASE WHEN Part1 ='Cable' THEN 'Cable' ELSE NULL END) [Cable1],
MIN(CASE WHEN Part1 ='Cable' THEN Part1_PN Else NULL END) Cable1_PN,
MIN(CASE WHEN Part1 ='Cable' THEN Part1_SN ELSE NULL END) Cable1_SN,
MIN(CASE WHEN Part2 ='Cable' THEN 'Cable' ELSE NULL END) [Cable2],
MIN(CASE WHEN Part2 ='Cable' THEN Part2_PN Else NULL END) Cable2_PN,
MIN(CASE WHEN Part2 ='Cable' THEN Part2_SN ELSE NULL END) Cable2_SN,
MIN(CASE WHEN Part3 ='Cable' THEN 'Cable' ELSE NULL END) [Cable3],
MIN(CASE WHEN Part3 ='Cable' THEN Part3_PN Else NULL END) Cable3_PN,
MIN(CASE WHEN Part3 ='Cable' THEN Part3_SN ELSE NULL END) Cable3_SN,
MIN(CASE WHEN Part4 ='Cable' THEN 'Cable' ELSE NULL END) [Cable4],
MIN(CASE WHEN Part4 ='Cable' THEN Part4_PN Else NULL END) Cable4_PN,
MIN(CASE WHEN Part4 ='Cable' THEN Part4_SN ELSE NULL END) Cable4_SN,
MIN(CASE WHEN Part5 ='Cable' THEN 'Cable' ELSE NULL END) [Cable5],
MIN(CASE WHEN Part5 ='Pump' THEN Part5_PN Else NULL END) Pump5_PN,
MIN(CASE WHEN Part5 ='Pump' THEN Part5_SN ELSE NULL END) Pump5_SN,
MIN(CASE WHEN Part1 ='Pump' THEN 'Pump' ELSE NULL END) [Pump1],
MIN(CASE WHEN Part1 ='Pump' THEN Part1_PN Else NULL END) Pump1_PN,
MIN(CASE WHEN Part1 ='Pump' THEN Part1_SN ELSE NULL END) Pump1_SN,
MIN(CASE WHEN Part2 ='Pump' THEN 'Pump' ELSE NULL END) [Pump2],
MIN(CASE WHEN Part2 ='Pump' THEN Part2_PN Else NULL END) Pump2_PN,
MIN(CASE WHEN Part2 ='Pump' THEN Part2_SN ELSE NULL END) Pump2_SN,
MIN(CASE WHEN Part3 ='Pump' THEN 'Pump' ELSE NULL END) [Pump3],
MIN(CASE WHEN Part3 ='Pump' THEN Part3_PN Else NULL END) Pump3_PN,
MIN(CASE WHEN Part3 ='Pump' THEN Part3_SN ELSE NULL END) Pump3_SN,
MIN(CASE WHEN Part4 ='Pump' THEN 'Pump' ELSE NULL END) [Pump4],
MIN(CASE WHEN Part4 ='Pump' THEN Part4_PN Else NULL END) Pump4_PN,
MIN(CASE WHEN Part4 ='Pump' THEN Part4_SN ELSE NULL END) Pump4_SN,
MIN(CASE WHEN Part5 ='Pump' THEN 'Pump' ELSE NULL END) [Pump5],
MIN(CASE WHEN Part5 ='Pump' THEN Part5_PN Else NULL END) Pump5_PN,
MIN(CASE WHEN Part5 ='Pump' THEN Part5_SN ELSE NULL END) Pump5_SN,
MIN(CASE WHEN Part1 ='Sensor' THEN 'Sensor' ELSE NULL END) [Sensor1],
MIN(CASE WHEN Part1 ='Sensor' THEN Part1_PN Else NULL END) Sensor1_PN,
MIN(CASE WHEN Part1 ='Sensor' THEN Part1_SN ELSE NULL END) Sensor1_SN,
MIN(CASE WHEN Part2 ='Sensor' THEN 'Sensor' ELSE NULL END) [Sensor2],
MIN(CASE WHEN Part2 ='Sensor' THEN Part2_PN Else NULL END) Sensor2_PN,
MIN(CASE WHEN Part2 ='Sensor' THEN Part2_SN ELSE NULL END) Sensor2_SN,
MIN(CASE WHEN Part3 ='Sensor' THEN 'Sensor' ELSE NULL END) [Sensor3],
MIN(CASE WHEN Part3 ='Sensor' THEN Part3_PN Else NULL END) Sensor3_PN,
MIN(CASE WHEN Part3 ='Sensor' THEN Part3_SN ELSE NULL END) Sensor3_SN,
MIN(CASE WHEN Part4 ='Sensor' THEN 'Sensor' ELSE NULL END) [Sensor4],
MIN(CASE WHEN Part4 ='Sensor' THEN Part4_PN Else NULL END) Sensor4_PN,
MIN(CASE WHEN Part4 ='Sensor' THEN Part4_SN ELSE NULL END) Sensor4_SN,
MIN(CASE WHEN Part5 ='Sensor' THEN 'Sensor' ELSE NULL END) [Sensor5],
MIN(CASE WHEN Part5 ='Sensor' THEN Part5_PN Else NULL END) Sensor5_PN,
MIN(CASE WHEN Part5 ='Sensor' THEN Part5_SN ELSE NULL END) Sensor5_SN
FROM Test
GROUP BY Pull_Date, Well_Name