从两个不同的表中获取数据,这些表在sql server中只有一个公共列

时间:2016-09-13 07:50:52

标签: sql sql-server tsql

我的表格如下:

请给我一个SQL查询以获得预期的结果集。

Table1                  
A   B   C   D   E   
1   2   C1  D1  E1  
2   2   C2  D2  E2  
3   2   C3  D3  E3  


Table2                  
A   B   F   G   H   
1   2   F1  G1  H1  
2   2   F2  G2  H2  
3   5   F3  G3  H3  
4   6   F4  G4  H4  

预期结果:

B   C       D       E       F       G       H
2   C1      D1      E1      NULL    NULL    NULL
2   C2      D2      E2      NULL    NULL    NULL
2   C3      D3      E3      NULL    NULL    NULL
2   NULL    NULL    NULL    F1      G1      H1
2   NULL    NULL    NULL    F2      G2      H2

1 个答案:

答案 0 :(得分:1)

您需要UNION来组合两个或更多查询的结果,如下所示。由于您在一个表格中有C, D, E而另一个表格中没有NULL,因此您需要使用F, G, H值添加此列,与SELECT * FROM ( SELECT B, C, D, E, NULL F, NULL G, NULL H FROM Table1 t1 UNION SELECT B, NULL C, NULL D, NULL E, F, G, H FROM Table2 t2 ) t WHERE B = 2 相同:

B   C       D       E       F       G       H
2   C1      D1      E1      NULL    NULL    NULL
2   C2      D2      E2      NULL    NULL    NULL
2   C3      D3      E3      NULL    NULL    NULL
2   NULL    NULL    NULL    F1      G1      H1
2   NULL    NULL    NULL    F2      G2      H2

输出:

XWPFDocument newDoc = new XWPFDocument(); //Doc to write new doc to
XWPFParagraph para = newDoc.createParagraph(); //Paragraph
XWPFRun run = para.createRun();  //Where the text will be written from
run.addTab()//Add tab and after that you can set text.
run.setText("Your text here...");
相关问题