2013-03-01 85 views
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 

現在我需要的國家代碼Damt(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必須返回結果集,我需要的情況下,使用設置。如何做到這一點?

+0

您正在使用哪個DMBS? – araknoid 2013-03-01 08:07:50

+0

SQL Server 2088 – 0537 2013-03-01 09:05:00

回答

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.[?] 

我不知道你應該使用什麼類型的連接,或者加入哪些列,但是應該讓你開始。

相關問題