に基づいて、私はテーブルを次ていますSSIS/SQL Serverの - フラグ、複数の条件の列
ID | Number | Condition 1 | Condition 2 | Condition 3 | Condition 4
1 | 1 | 1 | 2 | 1 | 1
1 | 2 | 2 | 1 | 2 | 2
2 | 5 | 2 | 2 | 2 | 1
2 | 6 | 2 | 2 | 2 | 2
3 | 7 | 1 | 1 | 2 | 1
3 | 8 | 2 | 1 | 1 | 2
3 | 3 | 2 | 1 | 2 | 2
4 | 9 | 2 | 1 | 1 | 1
4 | 4 | 1 | 1 | 1 | 2
5 | 10 | 2 | 1 | 2 | 1
5 | 13 | 2 | 1 | 2 | 2
(かなりの混乱、そのことについて申し訳ありません)
あなたが見ることができるように、複数のIDがあります。私は条件に基づいて、各IDの1つを取らなければならない。だから、私はそれぞれの条件を一つ一つチェックし、その結果に基づいてカラムを追加したいと思っています。この背後にあるロジックは、(IDの各グループについて)1行がcondition
= 1の場合、
です。両方の行が1または両方とも2の場合、次の条件をチェックします。
我々はID 1
とレコードだけを取るのであれば、我々はID 1 - Number 1
は私達が私達の出力に必要な正しいものである見ることができます。
しかし、ID 2
とすれば、両方のレコードが同じ値を持つことがわかります。これは私たちに答えを与えません。その場合、我々はcondition 2
を見て、そこに同じロジックを実装します。
(condition 4
は常にIDごとに '1' を持つ一つのレコードを持っています)
だから私の出力は次のようになります。
ID | Number | Condition 1 | Condition 2 | Condition 3 | Condition 4 | IsOk
1 | 1 | 1 | 2 | 1 | 1 | 1
1 | 2 | 2 | 1 | 2 | 2 | 2
2 | 5 | 2 | 2 | 2 | 1 | 1
2 | 6 | 2 | 2 | 2 | 2 | 2
3 | 7 | 1 | 1 | 2 | 1 | 1
3 | 8 | 2 | 1 | 1 | 2 | 2
3 | 3 | 2 | 1 | 2 | 2 | 2
4 | 9 | 2 | 1 | 1 | 1 | 2
4 | 4 | 1 | 1 | 1 | 2 | 1
5 | 10 | 2 | 1 | 2 | 1 | 1
5 | 13 | 2 | 1 | 2 | 2 | 2
何かアドバイス/提案?
これをSSISで使用するので、SSISまたは純粋なSQLコードのソリューションはすべて問題ありません。
誰かが不思議場合:私はCase
,CASE
when [Condition1] = 1 then 1
else CASE when [Condition2] = 1 then 1
else CASE when [Condition3] = 1 then 1
else CASE when [Condition4] = 1 then 1 END
END
END
END AS IsOk
でそれを試してみましたしかし、それはこのテーブルを導出自己参照で達成することができ、要求された結果
あなた 'Condition'値は常に '1'または '2'であるか、彼らはあるのでしょう:同じ
ID
のための「未OK]を行よりもrow_number
高いと返されて、「OK」行の例より複雑なデータの例? – iamdaveこれらは常に「1」または「2」です。この場合、 'true' /' fasle'と言う別の方法です。 – DenStudent
この表のユースケースについて少し詳しく説明できますか? Junk DimensionテーブルまたはFlagsテーブルから開始し、2番目のテーブルには各列のビットのみがあるようです。 –