如果为true,则执行其他操作以跳过SQL

时间:2018-10-19 14:22:23

标签: sql sql-server

您好,我有如下数据:

enter image description here

我正在尝试提供用于计算“ MERGE”列的代码。 基本上,我应该检查是否CLM_x> 0,然后从SZ_x中获取值,并与CLM_x中的值进行连接。 我正在尝试使用情况,但是如果CLM_x = 0,我不知道如何跳过合并: 当CLM_TBL1> 0时为例('Size'+ SZ_1 +'-Qty'+ CLM_1)else ... end ...

请告知,谢谢!

2 个答案:

答案 0 :(得分:5)

好这是一堆字符串运算:

select stuff( ((case when clm1_1 > 0 then concat(', Size ', sz_1, '-Qty ', clm1_1) else '' end) +
               (case when clm1_2 > 0 then concat(', Size ', sz_2, '-Qty ', clm1_2) else '' end) +
               (case when clm1_3 > 0 then concat(', Size ', sz_3, '-Qty ', clm1_3) else '' end)
              ), 1, 2, ''
             ) as merge_column

答案 1 :(得分:1)

您只需要将case语句串在一起即可。

merge = 
    case
        when CLM_1 > 0 then 'Size ' + SZ_1 + '-Qty '+ CLM_1 + ' '
        else ''
    end
    +
    case
        when CLM_2 > 0 then 'Size ' + SZ_2 + '-Qty '+ CLM_2 + ' '
        else ''
    end
    +
    case
        when CLM_3 > 0 then 'Size ' + SZ_3 + '-Qty '+ CLM_3 + ' '
        else ''
    end