我正在 SQL Server (DWH) 中写下一个视图,用例伪代码是:
-- Do some calculation and generate #Temp1
-- ... contains other selects
-- Select statement 1
SELECT * FROM Foo
JOIN #Temp1 tmp on tmp.ID = Foo.ID
WHERE Foo.Deleted = 1
-- Do some calculation and generate #Temp2
-- ... contains other selects
-- Select statement 2
SELECT * FROM Foo
JOIN #Temp2 tmp on tmp.ID = Foo.ID
WHERE Foo.Deleted = 1
视图的结果应该是:
Select Statement 1
UNION
Select Statement 2
预期行为与yield return
在 C# 中。有没有办法告诉视图SELECT
语句实际上是结果的一部分,哪些不是?因为我需要的之前的小计算也包含选择。
谢谢你!
C# 中的 Yield return 一次返回一行,就像它们出现在某些基础函数中一样。 SQL语句中不存在这个概念。 SQl 是基于集合的,返回整个结果集,概念上作为一个单元。 (也就是说,有时查询运行缓慢,您会看到行返回缓慢或批量返回。)
您可以使用控制返回的行数TOP
(在 SQL Server 中)。您可以使用以下命令选择要返回的特定行WHERE
声明。但是,您不能指定UNION
有条件地从某些组件返回行但不从其他组件返回行的语句。
您最接近的可能是这样的:
if UseTable1Only = 'Y'
select *
from Table1
else if UseTable2Only = 'Y'
select *
from Table2
else
select *
from table1
union
select *
from table2
您可以使用动态 SQL 来执行类似的操作,方法是将语句构造为字符串,然后执行它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)