-1

我有一个表需要更新为 Y 的值,但此更新是基于其他表的一些结果,我不知道如何执行此操作。

基本上,我需要完成以下检查

  1. 我需要从需要更新的表中检查另一个表是否有 19 个匹配的行
  2. 在那些字段之一不为空的匹配行中
  3. 我还有另外两个表,我需要检查后一个表中是否存在记录,并确保后者中的匹配记录不包含其中一个字段中的“Y”值。

我的方法是使用 UNION,但我希望有人建议我这种方法是否正确,或者是否有更好的方法:

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 作为标志来说明这个值是否回来更新我需要更改的表中的字段。

谁能给我建议?

4

1 回答 1

0

我不太清楚工会为你做了什么。

您想要一个更新语句,例如:

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
                    )

等等。您没有足够清楚地描述问题,无法提供更详细的代码。

于 2012-07-11T21:28:12.280 回答