Sql server 具有复杂逻辑的SQL Server更新
我有一个表需要更新为Y值,但是这个更新是基于其他表的一些结果,我不知道如何做 基本上,我需要完成以下检查Sql server 具有复杂逻辑的SQL Server更新,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个表需要更新为Y值,但是这个更新是基于其他表的一些结果,我不知道如何做 基本上,我需要完成以下检查 我需要从需要更新的表中检查另一个表是否正好有19个匹配行 在这些匹配行中,其中一个字段不为空 我还有另外两个表,我需要检查后一个表中是否存在记录,并确保后一个表中的匹配记录在其中一个字段中不包含“Y”值 我的方法是使用工会,但我希望有人能告诉我这种方法是否正确,或者是否有更好的方法: SELECT '1' FROM t_A_Outbound Where NOT HEADER IN (Sele
SELECT '1'
FROM t_A_Outbound
Where NOT HEADER IN (Select HEADER FROM t_B_Outbound)
UNION
SELECT '1'
FROM t_A_Outbound
Where HEADER IN (Select HEADER FROM t_B_Outbound
WHERE NOT INCOMPLETE ='Y')
UNION
Select '1'
From t_C_Outbound
Where ValueString = ''
UNION
Select '1'
From t_C_Outbound
WHERE Exists(Select Count(key), HEADER
From t_C_Outbound IN (SELECT HEADER FROM table_that_needs_updating)
Group By HEADER
Having NOT Count(Cast(key as Int)) = 19)
我考虑使用1作为标志,表示该值是否返回以更新表中需要更改的字段
谁能给我一些建议吗?我不清楚工会为你们做了什么 您需要类似以下内容的更新语句:
update table
set y = . . .
where header in (Select header
From t_C_Outbound
Group By HEADER
Having Count(*)= 19 and
count(KEY) = count(*)
) and
header in (select header
from other table
group by header
having sum(case when col = 'Y' then 1 else 0 end) = 0
)
等等。您对问题的描述不够清楚,无法给出更详细的代码。您能给我们看一下您想要的
更新
声明吗?我认为您可以使用from
和where
子句来验证数据。我还没有编写实际的update语句,但我正在查看我所使用的方法是否正确。所以,这是我正在寻找的建议,您正在制作一个包含数字1
的字符串集合。我不知道这有什么帮助。由于您无法告知如果所有验证都成功,您将更新什么,因此我只能建议使用if
或update
从join
.user92546在查询外部,我想的是需要更新的表\u\u\u更新集Complete='N'其中'QUERY BIT在这里'。我想知道的是,是否还有其他方法可以实现这个更新,不幸的是,没有,因为有些甚至没有得到响应