我有一种感觉,我在这个问题上花费了太多时间,并且已经失明了...并且希望有一双清新的眼睛可以帮助指出一个简单的错误!我可以将这两个几乎相同的MERGE语句合并为一个吗?
这是MERGE
声明我认为应该工作:
不工作:
MERGE assignment_tbl AS target
USING (SELECT 1 s) AS source
ON target.id = @id
AND target.id1 = @id1
AND target.id2 = @id2
WHEN matched AND NOT (target.iFeeScope = @iFeeScope OR target.nFeeAmount = @nFeeAmount) AND (target.bActive = 1) THEN
UPDATE SET target.dLastUpdated = @dNow,
target.dDisabled = @dNow,
target.bActive = 0;
的问题是在我WHEN matched AND NOT
声明:(target.iFeeScope = @iFeeScope OR target.nFeeAmount = @nFeeAmount)
,并围绕这个我”的唯一途径我们发现将这个陈述分成两个单独的(并且几乎相同的)块:
工作(但效率不高):
MERGE assignment_tbl AS target
USING (SELECT 1 s) AS source
ON target.id = @id
AND target.id1 = @id1
AND target.id2 = @id2
WHEN matched AND NOT (target.iFeeScope = @iFeeScope) AND (target.bActive = 1) THEN
UPDATE SET target.dLastUpdated = @dNow,
target.dDisabled = @dNow,
target.bActive = 0;
MERGE assignment_tbl AS target
USING (SELECT 1 s) AS source
ON target.id = @id
AND target.id1 = @id1
AND target.id2 = @id2
WHEN matched AND NOT (target.nFeeAmount = @nFeeAmount) AND (target.bActive = 1) THEN
UPDATE SET target.dLastUpdated = @dNow,
target.dDisabled = @dNow,
target.bActive = 0;
我需要什么,我原来的语句来更改实现以下两个语句的结果?
谢谢大家提前!
这与我原来的代码一样,但谢谢。我已经回答了解决方案。 – Paul 2012-08-03 01:57:21