0

コード タイプに基づいて金額を比較し、その金額を別のコード タイプと比較して結果を返す必要があるシナリオがあります。

例えば:

SELECT distinct P.TERM_KEY, C.Country_code, Amt.DAMT
FROM TERM P
      INNER JOIN Country C ON P.TERM_KEY= C.TERM_KEY 
      INNER JOIN Amount Amt ON C.COU_KEY = Amt.PARENT_KEY AND Amt.PARENT_TABLE=Country
WHERE P.Term_no = 'ABCD' AND C.Country_CD IN (50, 51) 

このクエリの結果は次のとおりです。

    TERM_KEY        Country_code     DAMT
    201000000085    5000             1000.00
    201000000083    5001             750.00
    201000000081    5001             1000.00
    201000000342    5000             1000.00
    201000002340    5001             750.00
    201000034733    5001             1000.00

ここで、国コード (50 および 51) のダムを国コード 20 と比較する必要があります。国コード 20 のダムと国コード (50、51) が等しい場合は、値を「5869」として報告する必要があります。等しくない場合は、値を報告する必要があります。値を「0000」として報告する必要があります。

上記の結果セットを他のケース条件で使用します

Case  
WHEN C.County = 999 and C.Contry_code = '20' AND ISNULL(CDED.DAmt,0)=0 THEN '5869'  
  C.County = 999 and C.Contry_code = '20' AND ISNULL(Amt.DAmt,0)!=0 THEN '0000'
end as Country_County

そのため、CDED は結果セットを返す必要があり、場合によってはこれを使用する必要があります。どうすればそれができますか?

4

1 に答える 1

0

データがどのように見えるか、またはどのように関連しているかはわかりませんが、2つのサブクエリを作成してそれらに参加します。

select  case 
            when ISNULL(subset_5051.DAmt,0) = ISNULL(subset_20.DAmt,0) then '5869'
            else '0000'
        end
from
    (
        SELECT distinct P.TERM_KEY, C.Country_code, Amt.DAMT
        FROM TERM P
              INNER JOIN Country C ON P.TERM_KEY= C.TERM_KEY 
              INNER JOIN Amount Amt ON C.COU_KEY = Amt.PARENT_KEY AND Amt.PARENT_TABLE=Country
        WHERE P.Term_no = 'ABCD' AND C.Country_CD IN (50, 51) 
    ) as subset_5051

    [left / right / inner / full] join

    (
        SELECT distinct P.TERM_KEY, C.Country_code, Amt.DAMT
        FROM TERM P
              INNER JOIN Country C ON P.TERM_KEY= C.TERM_KEY 
              INNER JOIN Amount Amt ON C.COU_KEY = Amt.PARENT_KEY AND Amt.PARENT_TABLE=Country
        WHERE P.Term_no = 'ABCD' AND C.Country_CD IN (20) 
    ) as subset_20
    on subset_5051.[?] =  subset_20.[?] 

どのタイプの結合を使用するか、またはどの列に結合するかはわかりませんが、それで開始できます。

于 2013-03-01T18:45:28.547 に答える