SQL Server 中的等效收益返回

Yield Return equivalent in SQL Server(SQL Server 中的等效收益返回)
本文介绍了SQL Server 中的等效收益返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我在 SQL Server (DWH) 中写下一个视图,用例伪代码是:

I am writing down a view in SQL server (DWH) and the use case pseudo code is:

-- 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

预期行为与 C# 中的 yield return 相同.有没有办法告诉视图哪些 SELECT 语句实际上是结果的一部分,哪些不是?因为我需要的前面的小计算也包含选择.

The intended behavior is the same as the yield returnin C#. Is there a way to tell the view which SELECT statements are actually part of the result and which are not? since the small calculations preceding what I need also contain selects.

谢谢!

推荐答案

我找到了更好的解决方法.它可能对其他人有帮助.其实就是把所有的计算都包含在 WITH 语句中,而不是在视图核心中进行:

I found a better work around. It might be helpful for someone else. It is actually to include all the calculation inside WITH statements instead of doing them in the view core:

WITH Temp1 (ID)
AS
(
    -- Do some calculation and generate #Temp1
    -- ... contains other selects
)

, Temp2 (ID)
AS
(
    -- Do some calculation and generate #Temp2
    -- ... contains other selects
)

-- Select statement 1
SELECT * FROM Foo
JOIN Temp1 tmp on tmp.ID = Foo.ID
WHERE Foo.Deleted = 1

UNION

-- Select statement 2
SELECT * FROM Foo
JOIN Temp2 tmp on tmp.ID = Foo.ID
WHERE Foo.Deleted = 1

结果当然是所有外部 SELECT 语句的 UNION.

The result will be of course the UNION of all the outiside SELECT statements.

这篇关于SQL Server 中的等效收益返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Sending parameters to stored procedures vb.net(将参数发送到存储过程 vb.net)
Insert multiple rows, count based on another table columns(插入多行,根据另一个表列计数)
How to hold the location of an image in a SQL Server database?(如何在 SQL Server 数据库中保存图像的位置?)
How to send to email (outlook) the selected items in SQL Server database using vb.net(如何使用 vb.net 将 SQL Server 数据库中的选定项目发送到电子邮件(Outlook))
datagrid checkbox writes Null instead of 0 (false) into database(datagrid 复选框将 Null 而不是 0 (false) 写入数据库)
DBCC CheckDb-any ways to detect errors vb.net?(DBCC CheckDb-vb.net 有什么检测错误的方法吗?)