如何使用另一个表转换所有字段

时间:2015-12-10 08:52:55

标签: sql-server select inner-join multiple-tables

我正在使用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 ......或? 非常感谢你的帮助。提前谢谢!

再见:)

1 个答案:

答案 0 :(得分:0)

虽然可以使用UNPIVOT,然后是LEFT JOIN然后按PIVOT来完成,更合适的解决方案是首先规范化数据。

在传统的关系数据库设计中,“ WORK ”表将有3列:

  1. 唯一标识符(id
  2. “灌木丛”(group
  3. 数据(item_id
  4. 然后,您只需使用“ EQUIPMENT ”表格JOIN此表格,并在表示“非旋转”的表示层中处理演示文稿。