我试图在case语句中写以下语句。 尝试为一个特定的列更新一个不同的TableB中的值。

我做完之后

Update a 
set DISMMR = 

然后尝试在case语句中检查以下条件

'H01' Is not NULL 
  and
('H02','H03','HR04','S07','S08','S09') Is NULL
 Then 'Unknown'

这里的值来自表名: TableA ,列名是Code

该特定列被设计为NOT NULL

在这里,我说的Is NULL意味着我想要说的是,这个特殊的值('H02','H03','HR04','S07','S08','S09')不存在或存在于TableA

当我说这个特定的值H01TableACode ---- Is not NULL -意味着列的这个特殊的价值Code ,从一列中存在/存在TableA

我需要在case语句中执行此操作,因为一旦检查完此条件,便会编写其他以WHEN开头的case语句,以检查另一条件并使用不同的值进行更新

我正在使用SQL Server 2008 R2。 现在,我编写了以下查询。 它在SSMS中运行良好,但是当我在SSIS包中使用此存储过程时。 我的包裹因错误而失败。

[执行SQL任务]错误:执行查询“执行[dbo]。[usp_GetMRF_CHP]?,?,?” 失败,并出现以下错误:“当未将EXISTS引入子查询时,在选择列表中只能指定一个表达式。”。 可能的失败原因:查询问题,“ ResultSet”属性设置不正确,参数设置不正确

CASE WHEN EXISTS(SELECT 1 FROM dbo.TableA WHERE Code = 'H01')
  AND NOT EXISTS(SELECT 1 FROM dbo.TableA 
                 WHERE Code IN ('H02','H03','HR04','S07','S08','S09')
                )
 THEN 'Unknown'
when ---- I have another case here. 

任何帮助将不胜感激。 提前致谢

===============>>#1 票数:0

如果我理解正确,那么您想知道是否存在代码='H01'的记录,而没有其他代码的记录。 该案例的语句如下所示:

CASE WHEN EXISTS(SELECT 1 FROM dbo.TableA WHERE Code = 'H01')
      AND NOT EXISTS(SELECT 1 FROM dbo.TableA 
                     WHERE Code IN ('H02','H03','HR04','S07','S08','S09')
                    )
     THEN 'Unknown'
END

  ask by ETLUser translate from so

未解决问题?本站智能推荐: