我对SQL的了解非常少,但我会尽力解释这个问题。
我有5个DB表在MS SQL Server中说 TAB1,TAB2,TAB3,TAB4,TAB5 。我正在开发一个中间件工具来集成到数据库系统。为此,我需要从数据库系统中检索表。
TAB1: MAT_ID, A1, A2, A3, A4
TAB2: MAT_ID, B1, B2
TAB3: MAT_ID, C1, C2, C3, C4, c5
TAB4: MAT_ID, D1, D2, D3, D4, D5, D6, D7
TAB5: MAT_ID, E1, E2, E3
我的结果应该如下
MAT_ID,A1,A2,A3,A4
MAT_ID,B1,B2
MAT_ID,C1,C2,C3,C4,c5
MAT_ID, D1, D2, D3, D4, D5, D6, D7
MAT_ID, E1, E2, E3
我的意思是应该追加所有的行显示。每个表中的列数将不同。另外,我需要对上述内容有如下额外要求。
MAT_ID将具有AA,BB,CC,DD,EE等值......
因此,当我为实例运行SQL查询时,我需要附加与单个MAT_ID相关的行,如下所示。
AA,A1,A2,A3,A4
AA,B1,B2
AA,C1,C2,C3,C4,c5
MAT_ID的值应该是动态的,我不能在Query中提及它。
我已经使用InnerJoin进行了检查,但它希望按预期工作。
我可以在确定DB表中不同MAT_ID的字段时添加一个额外的字段。如果您能提供其他任何选项,请与我们联系。 SELECT INTO也是我正在寻找的选项之一。
答案 0 :(得分:0)
试试这个,不确定这是否是你需要的。只是根据你的问题猜测
select MAT_ID, A1, A2, A3, A4, null as a5, null as a6, null as a7 from TAB1
union all
select MAT_ID, B1, B2, null, null, null, null, null from TAB2
union all
select MAT_ID, C1, C2, C3, C4, c5, null, null from TAB3
union all
select MAT_ID, D1, D2, D3, D4, D5, D6, D7 from TAB4
union all
select MAT_ID, E1, E2, E3, null, null, null, null from TAB5