2011-04-26 55 views
2

我有一个存储过程proc_Audit_GetAppEmployedRelative,其目的是返回以前的申请人亲属信息。下面SELECT语句是从过程:如何在存储过程的SELECT语句中创建“假”行

Select a.RowID, 
     a.ApplicantRowID, 
     a.RelativeName as SearsRelName, 
       Case When a.RelativeName <> 'N/A' then 'Yes' End as RelY, 
       Case When a.RelativeName = 'N/A' then 'Yes' End as RelN, 
     a.Relationship as SearsRelRelation, 
       a.RelativeJob as SearsRelJobType, 
     a.RelativeLoc as SearsRelJobLoc 
    From dbo.App_EmplRelative a(nolock) 
    Where a.ApplicantRowID = @ApplicantRowID 

我有一个要求返回RelN = Yes即使其他领域都在表App_EmplRelative空。基本上申请人没有任何雇佣的相关信息。我只需要伪造一行就可以获得RelN = Yes。请让我知道如何制作假行,我还需要proc中的上述select语句。

+0

您当前的查询是否可以返回多于一行? – 2011-04-26 14:22:50

回答

1

您可以将结果集放入一个变量中,然后测试结果集是否为空。如果是这样,您可以通过选择实际值来创建假行。有更好的方法,但这是现在流入我的大脑的东西。

SELECT TOP 1 null, null, null, 'Yes', null, null, null 
FROM dbo.App_EmplRelative a (nolock) 

我更倾向于将先有对@ApplicationRowId一个测试,然后只查询有效时,或处理编码侧空。注意:在2005年,您还可以使用.NET语言进行编码,并在那里处理这种类型的操作。

+0

如果您发布代码,XML或数据样本,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)以精确地格式化和语法突出显示它! – 2011-04-26 14:23:00

1
Select a.RowID, 
     a.ApplicantRowID, 
     a.RelativeName as SearsRelName, 
     Case 
     When a.RelativeName <> 'N/A' then 'Yes' End as RelY, 
     Case 
     When a.RelativeName = 'N/A' 
      or a.ApplicantRowID is null then 'Yes' End as RelN, 
     a.Relationship as SearsRelRelation, 
     a.RelativeJob as SearsRelJobType, 
     a.RelativeLoc as SearsRelJobLoc 
From (SELECT 1 AS C) T 
     LEFT JOIN dbo.App_EmplRelative a(nolock) 
     ON a.ApplicantRowID = @ApplicantRowID 
+0

'CASE COALESCE(a.RelativeName,'N/A')当'不适用'那么'是'结束为可靠'。 – 2011-04-26 21:28:30

相关问题