【发布时间】:2018-08-17 12:20:03
【问题描述】:
我想检查同一帐户和同一日期的同一表中是否存在记录。这是我认为使用它的案例陈述
CREATE VIEW TEST AS
SELECT
T1.DATE,
T1.ACTNBR,
CASE WHEN EXISTS (SELECT COLUMN1 FROM TABLE T2 WHERE T2.ACTNBR = T1.ACTNBR AND T2.DATE = T1.DATE)
THEN calculation1
ELSE calculation2
END CAL_COLUMN
FROM TABLE T1
当这个 CASE 返回 boolean 时,我希望计算 1 执行否则计算 2 应该执行。
看起来上面的 CASE WHEN EXISTS 语句将检查表中的所有日期和所有帐户编号,而不是检查该特定行日期和帐号。 我们能否启动一个变量(在执行 select 语句之前)并存储该记录的检查日期并为每一行重新初始化。
【问题讨论】:
-
您的视图似乎符合您的预期。你能提供样本数据和期望的结果吗?
-
欢迎来到 SO!请阅读how to provide a minimal, complete and verifiable example,它会重现您的问题。
-
您是否试图通过最小化内部选择的执行次数来优化这一点?或者您想对表进行一次性更新以将计算结果存储在该表中?
-
@Ram 您的观察似乎是错误的,存在将在 T1 中的每行执行。
-
@Fact 是的,你是对的。我认为内部查询将匹配外部查询中的所有日期。我们后来注意到了这一点。我在sql中处于初级水平。
标签: sql sql-server-2012 case sql-view case-when