我正在使用SQL Server。 我想通过使用另一个表来“翻译”所有返回的值。
“WORK”表格如下所示:
Id |item1 |item2 |item3 |item4 |item5 |item6 |item7 |item8 |item9 |item10
-------------------------------------------------------------------------
1 | 1019 | 3009 | 4014 | 3001 | 4005 | 4019 | 4006 | 2021 |(NULL)|(NULL)
2 | 1019 | 3009 | 4014 | 3001 | 4005 | 3012 | 4019 | 4006 | 2021 |(NULL)
3 | 1019 | 3009 | 4014 | 3002 | 4004 | 4018 | 4006 | 2021 |(NULL)|(NULL)
4 | 1019 | 3009 | 4014 | 3001 | 4005 | 3012 | 4019 | 4006 | 2021 |(NULL)
转换表“EQUIPEMENT”:
Id | Name
-------------
1018 | C18
1019 | TVR1
2018 | C18
2021 | CAMION
3000 | E1
3001 | E2
3002 | E3
3009 | TCR1
3010 | TCR2
3011 | NETT
3012 | EM
4004 | B2D5
4005 | B2D6
4006 | B2D7
4014 | B2D15
4019 | P306B
然后我查询:SELECT * FROM WORK WHERE Id=1
我想得到这个:
1 | TVR1 | TCR1 | B2D15 | E2 | B2D6 | P306B | B2D7 | CAMION |(NULL)|(NULL)
毫无疑问我们必须使用一些JOIN ......或? 非常感谢你的帮助。提前谢谢!
再见:)
答案 0 :(得分:0)
虽然可以使用UNPIVOT
,然后是LEFT JOIN
然后按PIVOT
来完成,更合适的解决方案是首先规范化数据。
在传统的关系数据库设计中,“ WORK ”表将有3列:
id
)group
)item_id
)然后,您只需使用“ EQUIPMENT ”表格JOIN
此表格,并在表示“非旋转”的表示层中处理演示文稿。