次のようなデータを含む金融費用の表があります。
tx_id tdl_id tx_num detail_type_name charges payor_id orig_payor
73765 737650000 1 CHARGE 320.00 1019 MEDI_CAL
7395 739500000 1 CHARGE 320.00 1253 THIPA/TORRANCE
7444 744400000 1 CHARGE 350.00 NULL NULL
7444 744410000 1 VOID -350.00 NULL NULL
7498 749800000 1 CHARGE 225.00 1011 UNITED HEALTH
750023 750023000 1 CHARGE 225.00 NULL NULL
750023 750023100 1 VOID -225.00 NULL NULL
VOID とそれに対応する CHARGES を除外するクエリ、つまりこれらのレコードを返す SQL ステートメントが必要です。
tx_id tdl_id tx_num detail_type_name charges payor_id orig_payor
73765 737650000 1 CHARGE 320.00 1019 MEDI_CAL
7395 739500000 1 CHARGE 320.00 1253 THIPA/TORRANCE
7498 749800000 1 CHARGE 225.00 1011 UNITED HEALTH
これらのレコードを除く:
tx_id tdl_id tx_num detail_type_name charges payor_id orig_payor
7444 744400000 1 CHARGE 350.00 NULL NULL
7444 744410000 1 VOID -350.00 NULL NULL
750023 750023000 1 CHARGE 225.00 NULL NULL
750023 750023100 1 VOID -225.00 NULL NULL
最初に、次のようなステートメントを使用して tdl_id を比較しようとしました。
SELECT * FROM tablename
WHERE LEFT(TDL_ID,4) IN (SELECT LEFT(TDL_ID,4)
FROM tablename
GROUP BY LEFT(TDL_ID,4)
HAVING COUNT(*) < 2)
しかし、一部の tdl_id には 4 つの同じ数字、一部の 5、一部の 6、および一部の 7 があるため、うまくいきませんでした。
私の 2 番目のアイデアは、2 つの行を比較して「detail_type_name」と「料金」を確認することでした。これにより、2 つの行を比較し、「CHARGES」が同じで (1 つがマイナス)、1 つの行に「CHARGE」があり、 1つは「VOID」です。しかし、2 つの行を比較する方法がわかりません。複数の INNER JOINS で同じテーブルを使用して結び付けました (ここで概説されているようにhttp://bit.ly/1a70mc2 ) が、正しい結果が得られませんでした。アドバイスや指示は大歓迎です!
更新: tx_id、payor_id、orig_payor は、NULL でない場合と NULL でない場合があります。