0

我有一张 HO_TRAN 表,其中存储了有关交易的 5 年数据。表由 Season_id、farmer_id、plot_no、Net_weight 等字段组成。季节 id 是交易年份 farmer_id 是消费者 ID Plot_no 是农民拥有的唯一地块编号。net_weight 是农民通过他的各种地块提供给我们的产品。

我需要的是通过farmer_id分析(比较)2年的数据,这意味着我想过滤提供了两年的farmer_id,而谁没有提供。我很困惑如何为此设计SQL查询。我想以这种方式输出

     Farmer_id | Plot_no | Net_weight 

     1         | 123     | 5.00
               | 321     | 15.00
     2         | 456     | 6.00
               | 159     | 65.00
               | 187     | 56.00
     3         | 642     | 47.00
4

2 回答 2

0

假设您有两年的想法,比如 YEAR1 和 YEAR2,那么您可以为此目的使用分析函数:

select Farmer_id, Plot_no, Net_weight 
from (select ht.*,
             max(case when season = YEAR1 then 1 else 0 end) over (partition by farmer_id) as year1,
             max(case when season = YEAR2 then 1 else 0 end) over (partition by farmer_id) as year2
      from HO_TRAN ht
     ) ht
where year1 = 1 and year2 = 1
于 2013-04-16T10:46:29.130 回答
0
select Farmer_id, Plot_no, Net_weight
from HO_TRAN as ht
where exists (
      select 1 from HO_TRAN
      where Farmer_id = ht.Farmer_id
      and year between X and Y
      group by Farmer_id
      having count(distinct year) = 2
);

或类似的东西,取决于你的实际意思。您说您想跨年分析和比较,但您提出的结果中没有年份。

于 2013-04-18T03:18:30.270 回答