如何将所有字段转换为另一个 table

How to convert all the fields with another table

我正在使用 SQL 服务器。 我想 "translate" 使用另一个 table.

所有返回值

"WORK" table 看起来像这样:

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)

和转换 table "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... 或者? 非常感谢您的帮助。提前致谢!

再见:)

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

在经典关系数据库设计中,您的“WORK”table 将有 3 列:

  1. 唯一标识符(id
  2. A "groupping key" (group)
  3. 数据(item_id

然后您只需 JOIN 这个 table 和“EQUIPMENT” table,并在表示层中处理表示照顾 "un-pivoting".