2015-10-06 94 views
1

我试图使用双声明时,但不知道如何这样做。 这里是我使用WHEN声明后另一个当声明

CASE WHEN dbo.CSEFExtWorkflowAbsences.Number41=1 THEN dbo.CSEFExtWorkflowAbsences.Text1 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=2 THEN dbo.CSEFExtWorkflowAbsences.Text2 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=3 THEN dbo.CSEFExtWorkflowAbsences.Text3 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=4 THEN dbo.CSEFExtWorkflowAbsences.Text4 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=5 THEN dbo.CSEFExtWorkflowAbsences.Text5 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=6 THEN dbo.CSEFExtWorkflowAbsences.Text6 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=7 THEN dbo.CSEFExtWorkflowAbsences.Text7 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=8 THEN dbo.CSEFExtWorkflowAbsences.Text8 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=9 THEN dbo.CSEFExtWorkflowAbsences.Text9 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=10 THEN dbo.CSEFExtWorkflowAbsences.Text10 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=11 THEN dbo.CSEFExtWorkflowAbsences.Text11 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=12 THEN dbo.CSEFExtWorkflowAbsences.Text12 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=13 THEN dbo.CSEFExtWorkflowAbsences.Text13 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=14 THEN dbo.CSEFExtWorkflowAbsences.Text14 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=15 THEN dbo.CSEFExtWorkflowAbsences.Text15 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=16 THEN dbo.CSEFExtWorkflowAbsences.Text16 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=17 THEN dbo.CSEFExtWorkflowAbsences.Text17 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=18 THEN dbo.CSEFExtWorkflowAbsences.Text18 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=19 THEN dbo.CSEFExtWorkflowAbsences.Text19 
WHEN dbo.CSEFExtWorkflowAbsences.Number41=20 THEN dbo.CSEFExtWorkflowAbsences.Text20 
ELSE 'N/A' END 

我所做的没有考虑对是dbo.CSEFExtWorkflowAbsences.Text[xx]可以为null这是我想要做的就是在每个WHEN声明THEN后,我会用另一种WHEN ISNULL做代码写入“See attachment”ELSE如果不是null,则使用该文本。不知道该如何写入。保持小心,当我尝试执行isnullwhen isnullcase when isnull后跟else

回答

0

为什么你不只是添加一个语句?

WHEN dbo.CSEFExtWorkflowAbsences.Number41 is null THEN 'See Attachment' 

这将工作得很好。

+0

的OP是说,在'THEN'表达也可以为空,而这正是他试图解释 - 不是'WHEN'条件。 –

+0

我误解了。然后我会再做一次,并检查它最终发现的价值。将整个查询用作派生表。 – durbnpoisn

2

只要做一个ISNULL()检查。

WHEN dbo.CSEFExtWorkflowAbsences.Number41=1 
THEN ISNULL(dbo.CSEFExtWorkflowAbsences.Text1, 'See attachment') 
5

为什么不case围绕isnull?你也可以使用的case的形式,你在一个值,而不是条件选择:

ISNULL(CASE dbo.CSEFExtWorkflowAbsences.Number41 
    WHEN 1 THEN dbo.CSEFExtWorkflowAbsences.Text1 
    WHEN 2 THEN dbo.CSEFExtWorkflowAbsences.Text2 
    WHEN 3 THEN dbo.CSEFExtWorkflowAbsences.Text3 
    WHEN 4 THEN dbo.CSEFExtWorkflowAbsences.Text4 
    WHEN 5 THEN dbo.CSEFExtWorkflowAbsences.Text5 
    WHEN 6 THEN dbo.CSEFExtWorkflowAbsences.Text6 
    WHEN 7 THEN dbo.CSEFExtWorkflowAbsences.Text7 
    WHEN 8 THEN dbo.CSEFExtWorkflowAbsences.Text8 
    WHEN 9 THEN dbo.CSEFExtWorkflowAbsences.Text9 
    WHEN 10 THEN dbo.CSEFExtWorkflowAbsences.Text10 
    WHEN 11 THEN dbo.CSEFExtWorkflowAbsences.Text11 
    WHEN 12 THEN dbo.CSEFExtWorkflowAbsences.Text12 
    WHEN 13 THEN dbo.CSEFExtWorkflowAbsences.Text13 
    WHEN 14 THEN dbo.CSEFExtWorkflowAbsences.Text14 
    WHEN 15 THEN dbo.CSEFExtWorkflowAbsences.Text15 
    WHEN 16 THEN dbo.CSEFExtWorkflowAbsences.Text16 
    WHEN 17 THEN dbo.CSEFExtWorkflowAbsences.Text17 
    WHEN 18 THEN dbo.CSEFExtWorkflowAbsences.Text18 
    WHEN 19 THEN dbo.CSEFExtWorkflowAbsences.Text19 
    WHEN 20 THEN dbo.CSEFExtWorkflowAbsences.Text20 
    ELSE 'N/A' 
END, 'See attachment') 
+0

非常感谢,它完美的作品。 – Jim1122