2016-12-13 6 views
0

case文の12列を連結する必要があるクエリがあります。それが明確であるためには2または3であれば、それは簡単だっただろう、ここに私のクエリです:case文の複数の列を連結する

SELECT column1 
    ,column2 
    ,effet_secondaire_desc = CASE WHEN [symp01] = 'y' THEN 'Pedi apeti' 
           WHEN [symp02] = 'y' THEN 'Ke plen' 
           WHEN [symp03] = 'y' THEN 'Zye jon' 
           WHEN [symp04] = 'y' THEN 'Dyare' 
           WHEN [symp05] = 'y' THEN 'Ko grate' 
           WHEN [symp06] = 'y' THEN 'Lafyev ak frison' 
           WHEN [symp07] = 'y' THEN 'Ko fe mal ak jwenti fe mal' 
           WHEN [symp08] = 'y' THEN 'Pikotman' 
           WHEN [symp09] = 'y' THEN 'Fatig' 
           WHEN [symp10] = 'y' THEN 'Tet vire/vetij' 
           WHEN [symp11] = 'y' THEN 'Vant fe mal' 
           WHEN [symp12] = 'y' THEN [symp12_desc] 
           ELSE '~' 
          END 
      ..... 
      ,columnx 
FROM MyTable 

[symp01] ... [symp12]私が連結する12列です。したがって、effet_secondaire_descの値は、このようなものでなければなりません。 'Pedi apeti、Ko grate、Lafyev ak frison、...'

誰でも私に助けてくれますか? ありがとうございます。

+0

これは非常に悪いデータベース設計のようです。複数の症状は、複数の列ではなく複数の行として格納する必要があります。余りにも遅れていない場合は、それを変更する必要があります。 – abl

+0

これは遅いです。私はデータベースを設計しなかった。私の役割は日々の報告をすることです。 – R2D2

答えて

0
select 
    column1 
    , column2 
    , effet_secondaire_desc = isnull(nullif(stuff(
    case when [symp01] = 'y' then ', Pedi apeti'     else '' end 
    +case when [symp02] = 'y' then ', Ke plen'      else '' end 
    +case when [symp03] = 'y' then ', Zye jon'      else '' end 
    +case when [symp04] = 'y' then ', Dyare'      else '' end 
    +case when [symp05] = 'y' then ', Ko grate'     else '' end 
    +case when [symp06] = 'y' then ', Lafyev ak frison'   else '' end 
    +case when [symp07] = 'y' then ', Ko fe mal ak jwenti fe mal' else '' end 
    +case when [symp08] = 'y' then ', Pikotman'     else '' end 
    +case when [symp09] = 'y' then ', Fatig'      else '' end 
    +case when [symp10] = 'y' then ', Tet vire/vetij'    else '' end 
    +case when [symp11] = 'y' then ', Vant fe mal'     else '' end 
    +case when [symp12] = 'y' then ', '+[symp12_desc]    else '' end 
    ,1,2,''),''),'~') 
    , columnx 
from mytable 
+1

私はちょうどそれを試して、それは動作します。ありがとう、たくさんの人。私は木曜日以来これにいました。あなたは私の時間を救っただけです。 – R2D2

0

だから、これ?:

SELECT 
... 
CASE WHEN [symp01] = 'y' THEN ', Pedi apeti' ELSE '' END 
+ CASE WHEN [symp02] = 'y' THEN ', Ke plen' ELSE '' END 
+ ... 
END 

そして何か最初のカンマとスペースを削除するには、いくつかのロジックでそれをラップします。

関連する問題