繁体   English   中英

基于sql中多列的条件过滤

[英]conditional filtering based on multiple columns in sql

我有一个包含以下列和数据的表:

ID    NAME    Amount              Date
53    GSG    -2,695,190,307.57    1/22/2018
53    GSG    -2,698,190,307.57    1/23/2018
77    GSG    -2,508,853,140.14    1/22/2018
77    GSG    -2,508,303,140.14    1/23/2018
76    GSG    -2,479,894,820.77    1/23/2018
53    MLG    -2,443,081,761.81    1/23/2018
53    MLG    -2,405,497,472.79    1/22/2018
67    GSG    -2,164,848,916.29    1/23/2018
66    GSG    -2,160,447,589.23    1/22/2018
66    GSG    -2,160,447,589.23    1/23/2018
76    MLG    -2,147,093,992.33    1/23/2018

我正在寻找的输出是每当我们有两个连续的日期用于特定情况时,我们需要比较金额,并且对于每个日期我们都具有最大金额,我想将该记录显示为结果。 预期结果集应如下所示:

ID    NAME    Amount              Date
53    GSG    -2,698,190,307.57    1/23/2018
77    GSG    -2,508,853,140.14    1/22/2018
76    GSG    -2,479,894,820.77    1/23/2018
53    MLG    -2,443,081,761.81    1/23/2018
67    GSG    -2,164,848,916.29    1/23/2018
66    GSG    -2,160,447,589.23    1/22/2018
76    MLG    -2,147,093,992.33    1/23/2018

我尝试了case语句,这是我拥有的SQL:

select hdc1.ID, hdc1.name, 
    case when hdc1.amount < hdc2.amount
        then hdc1.amount
        else hdc2.amount
    end as Final_amount,
    Case when hdc1.amount < hdc2.amount
        then hdc1.date
        else hdc2.date
    end as forecast_date,
from Hori_dmnd_cmo hdc1, Hori_dmnd_cmo hdc2
where hdc1.date = date(hdc2.date - 1 day)
    and hdc1.id = hdc2.id
    and hdc1.name = hdc2.name

你的逻辑似乎是正确的轨道上,但我会用join代替, -你得到取最小值,而不是最大值。

这是您想要的吗?

select hdc1.ID, hdc1.name, 
       (case when hdc1.amount >= hdc2.amount
             then hdc1.amount
              else hdc2.amount
        end) as Final_amount,
       (case when hdc1.amount >= hdc2.amount
             then hdc1.date
             else hdc2.date
        end) as forecast_date,
from Hori_dmnd_cmo hdc1 join
     Hori_dmnd_cmo hdc2
     on hdc1.date = (hdc2.date - 1 day) and
        hdc1.id = hdc2.id
        hdc1.name = hdc2.name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM