我已经敲了几个小时,看起来很简单,但是这里有:
我想使用输出Single记录集的多个select语句创建一个视图 例如:
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'
任何帮助将不胜感激! -Thanks。
答案 0 :(得分:2)
联合可能是您想要的,但请记住,您需要具有完全相同的列,因此您需要为每个选择添加空列。
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'
这将结合两个结果,仅为您提供独特的组合。 我的猜测是,这不是你想要的。
是否有理由不能在一个查询中完成此操作或者执行某些子查询? 也许你可以提供一个更具体的例子。
答案 1 :(得分: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的信息或如何加入它们。
答案 2 :(得分: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')