在SQL Server中查找case语句中的解决方案

时间:2013-04-17 22:27:52

标签: sql-server-2008 case

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

我做完

Update a 
set DISMMR = 

然后尝试在案例陈述中检查以下条件

'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

当我在H01列中为TableACode说出此特定值Is not NULL时 - 表示列Code的此特定值存在/出现在TableA的列中。

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

我正在使用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 :(得分:0)

如果我理解你是正确的,你想知道是否存在Code ='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