在MS SQL Server 2008及更高版本中,可以使用values
作为子查询指定“文字”表:
select * from (
values (1,2),
(3,4)
) as foo(bar,baz)
但是,我还没有想出一个合理的方法在with
子句(CTE)中指定它。
我希望以下内容能够正常工作,因为它在程序员友好的PostgreSQL中运行得很好......但它给SQL Server带来了语法错误:
with foo(bar,baz) as (
values (1,2),
(3,4)
)
select * from foo;
这种替代形式可以正常工作,但似乎过于冗余且容易出错:
with foo as (
select * from (
values (1,2),
(3,4)
) as foo(bar, baz)
)
select * from foo;
在SQL Server中,是否有更简洁的方法在CTE中指定文字表?
答案 0 :(得分:0)
with foo as (select 1 as bar, 2 as baz
union all
select 3, 4)
select * from foo;