比较两个字段的数量并将其与第三个字段进行比较并返回结果
问题描述:
我有一个场景,我需要根据其代码类型比较金额并将其与另一个代码类型进行比较并返回结果。比较两个字段的数量并将其与第三个字段进行比较并返回结果
例如:
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必须返回结果集,我需要的情况下,使用设置。如何做到这一点?
答
不确定你的数据是什么样的或它是如何相关的,但我只是创建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.[?]
我不知道你应该使用什么类型的连接,或者加入哪些列,但是应该让你开始。
您正在使用哪个DMBS? – araknoid 2013-03-01 08:07:50
SQL Server 2088 – 0537 2013-03-01 09:05:00