2011-04-26 85 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

相關問題