0

私が達成しようとしていることを説明するために最善を尽くします。

次のデータのサブセットを含むテーブルがあります。

ID    BF_ID    C_ID    T_ID
1     1        10000   182
2     1        230     null
3     2        123     null
4     3        10000   124

基本的に、このテーブルに基づいてクエリを実行し、結果に非 null と非 null C_ID のBF_ID両方を持つデータが存在するかどうかを確認したいと思います。T_ID

上記の例では、異なる BF_ID 間のクエリを区別したいと思います。BF_id の行数は無限になる可能性があります。

  • 1 の BF_ID は「混合」を返します。
  • 2 の BF_ID は「C_ID_ATTRIB」を返します
  • 3 の BF_ID は「T_ID_ATTRIB」を返します
4

2 に答える 2

0

これには group by と case ステートメントが必要です。

select bf_id,
       (case when count(t_id) = 0 and count(c_id) = 0 then 'Neither'
             when count(t_id) > 0 and count(c_id) = 0 then 'T_ID_ATTRIB'
             when count(t_id) = 0 and count(c_id) > 0 then 'C_ID_ATTRIB'
             else 'Mixed'
        end) as WhichAttribute
from t
group by bf_id
于 2012-11-30T19:48:55.370 に答える
0

ゴードンによって提供された例の別の代替、おそらくより読みやすい: (テストなしで入力しただけ) select bf_id, case when c is null and t is null then 'neither' when c is null and t is not null then 'T_ID_ATTRIB' when c is not null and t is null then 'C_ID_ATTRIB' else 'mixed' as which_attr from ( select bf_id, max(c_id) c, max(t_id) t from table1 group by bf_id)

于 2012-11-30T20:09:32.403 に答える