2016-03-18 69 views
0

我想聯盟2個querys多列像推薦的其他帖子這樣SQL服務器:聯盟與多列

select NULL AS Col1 
     ,NULL AS Col2 
     ,NULL AS Col3 
     ,Col4 
     ,Col5 

union 

select Col1 
     ,Col2 
     ,Col3 
     ,NULL AS Col4 
     ,NULL AS Col5 

我得到:

Col1 | Col2 | Col3 | Col4 | Col5 
--------------------------------- 
NULL | NULL | NULL | 2 | 0 
7 | 3 | 4 | NULL | NULL 

是有什麼辦法結合行? 因爲那個別名我不能按列分組。

我想

Col1 | Col2 | Col3 | Col4 | Col5 
--------------------------------- 
    7 | 3 | 4 | 2 | 0 
+0

它不清楚。編輯你的問題,並添加你想要的結果樣本 –

+0

你確定'UNION'是你想要在這裏實現嗎?我假設每個查詢都有不止一行?如果是這樣,這些行意味着如何「匹配」成爲較少數量的輸出行? –

+0

沒有一個更好的例子(即使用多行,有一個'FROM'子句,等等),我們都只是難住爲什麼你的查詢不只是'選擇Col1,Col2,Col3,Col4,Col5' - 你不能看看你的演講爲什麼令人困惑? –

回答

0

是的,你可以使用CROSS JOIN爲您的使用情況如下圖所示

select Col1 ,Col2 ,Col3, Col4 ,Col5 from tblA CROSS JOIN tblB

See working SQL demo

1

按DhruvJoshi答案,你可以這樣試試,

SELECT B.Col1 
    ,B.col2 
    ,B.col3 
    ,A.col4 
    ,A.col5 
FROM (
    SELECT NULL AS Col1 
     ,NULL AS Col2 
     ,NULL AS Col3 
     ,2 AS Col4 
     ,0 AS Col5 
    ) A 
CROSS JOIN (
    SELECT 7 AS Col1 
     ,3 AS Col2 
     ,4 AS Col3 
     ,NULL AS Col4 
     ,NULL AS Col5 
    ) B 
+0

是的,我知道了。工作很好。我做的唯一更改是使用INNER JOIN成爲5列。用這個OUTER JOIN你會變成10行。 – sano

+0

請投票或選擇最適合您的任何一個答案 – StackUser

0

試試這個:

SELECT SUM(Col1) AS 'Col1', SUM(Col2) AS 'Col2', SUM(Col3) AS 'Col3', SUM(Col4) AS 'Col4', SUM(Col5) AS 'Col5' FROM 
(
select NULL AS Col1 
     ,NULL AS Col2 
     ,NULL AS Col3 
     ,Col4 
     ,Col5 

union 

select Col1 
     ,Col2 
     ,Col3 
     ,NULL AS Col4 
     ,NULL AS Col5 
) A