2010-04-28 36 views
0

我敲我的頭幾個小時,這看起來很簡單,但在這裏有雲:SQL服務器,查看使用多個SELECT語句

我想使用輸出一個記錄多個SELECT語句創建一個視圖-set 例子:

CREATE VIEW dbo.TestDB 
AS 
SELECT  X AS 'First' 
FROM  The_Table 
WHERE  The_Value = 'y' 

SELECT  X AS 'Second' 
FROM  The_Table 
WHERE  The_Value = 'z' 

我想輸出下面的記錄:

Column_1 | Column_2 
'First' 'Second' 

任何幫助,將不勝感激! - 謝謝。

+0

你怎麼知道它與「Y」的值的記錄都涉及到與「Z」的值記錄?如果他們要成爲同一條線,我們需要了解他們之間的真實情況是如何確定的。 – HLGEM 2010-04-28 20:47:47

回答

1

聯合可能是你想要的,但請記住,你需要有完全相同的列,所以你需要爲每個選擇添加一個空列。

SELECT  X AS 'First', Null as 'Second' 
FROM  The_Table 
WHERE  The_Value = 'y' 
Union 
SELECT  null as 'First', X AS 'Second' 
FROM  The_Table 
WHERE  The_Value = 'z' 

這將結合這兩個結果,並給你唯一的組合。 我的猜測是,這不是你正在尋找的。

有沒有理由不能在一個查詢中完成此操作,或者可能執行一些子查詢? 也許你可以提供一個更具體的例子。

2

,如果你想這樣的:

Column_1 | Column_2 
'First' null 
null  'Second' 

可以使用UNION像其他答案建議,但如果你真的想那麼在同一行像你的問題:

Column_1 | Column_2 
'First' 'Second' 

嘗試類似這樣:

CREATE VIEW dbo.TestDB 
AS 

SELECT 
    dt.First,dt2.Second 
    FROM (SELECT 
       X AS 'First',ROW_NUMBER() OVER(ORDER BY X) AS RowNumber 
       FROM The_Table 
       WHERE The_Value = 'y' 
     ) dt 
     LEFT OUTER JOIN (SELECT 
          X AS 'Second',ROW_NUMBER() OVER(ORDER BY X) AS RowNumber 
          FROM The_Table 
         WHERE The_Value = 'z' 
         ) dt2 ON dt.RowNumber=dt2.RowNumber 
go 

我不知道如何加入表格,有關PK的信息或如何加入它們。

0

未經測試

CREATE VIEW dbo.TestDB 
AS 
SELECT  CASE The_Value when 'y' then x else NULL END AS 'First', 
      CASE The_Value when 'z' then x else NULL END AS 'Second' 
FROM  The_Table 
WHERE  The_Value in('y','z')