2

テーブル:

Date = 20120101, ID = 123456, ParentID = 654321, System1 = 1, System2 = 1

System1ユーザーは、、、またはその両方でアクティブにできますSystem2(1 = true、0 = false)。クエリは次のように出力する必要があります。

System1   System2
1         0            "System1", "All"
0         1            "System2", "All"
1         1            "System1", "System2", "All"
0         0            "All"

ケースステートメントを試していましたが、希望どおりに出力できませんでした。

4

2 に答える 2

2
select *,
         case when system1 = 1 and system2 = 0 then 'System1, All'
              when system1 = 1 and system2 = 1 then 'System1, System2, All'
              when system1 = 0 and system2 = 0 then 'All'
              when system1 = 0 and system2 = 1 then 'System2, All'
         end as output
from your_table
于 2012-08-09T19:35:51.577 に答える
1

データの行ごとに複数の行を生成したいという考えが浮かびました。

もしそうなら、以下はこれを行います:

select a.*
from ((select t.*, 'ALL' as thecode
       from t
      ) union all
      (select t.*, 'System1'
       from t
       where system1 = 1
      ) union all
      (select t.*, 'System2'
       from t
       where system2 = 1
      )
     ) a
于 2012-08-09T19:42:52.363 に答える