加入并加倍结果

时间:2020-09-14 20:15:44

标签: sql join sum left-join

我有两个表t_tran_log和t_item_master。

当我针对t_tran_log运行此查询时,我得到了准确的结果:

declare @startdate as datetime; declare @enddate as datetime
set @startdate = '9/13/20 5am'; set @enddate = dateadd(hour,24,@startdate)

select
cast(t.start_tran_date+t.start_tran_time  - '1900-01-01 05:00' as date) tran_date
,t.item_number
,sum(t.tran_qty) qty

from t_tran_log t

where t.start_tran_date+t.start_tran_time >= @startdate
and t.start_tran_date+t.start_tran_time < @enddate
and t.tran_type = '750'  and t.description like 'Customer Return' and t.hu_id not like '1Z%'

group by cast(t.start_tran_date+t.start_tran_time  - '1900-01-01 05:00' as date), t.item_number

但是,当我尝试通过左联接从另一个表中提取其他物料详细信息时,我突然得到的物料数量结果翻倍!我在做什么错了?

declare @startdate as datetime; declare @enddate as datetime
set @startdate = '9/13/20 5am'; set @enddate = dateadd(hour,24,@startdate)

select
cast(t.start_tran_date+t.start_tran_time  - '1900-01-01 05:00' as date) Date
,t.item_number
,i.dept_name
,i.class_name
,i.subclass_name
,sum(t.tran_qty) qty

from t_tran_log t

left join t_item_master i on t.item_number = i.item_number

where t.start_tran_date+t.start_tran_time >= @startdate
and t.start_tran_date+t.start_tran_time < @enddate
and t.tran_type = '750'  and t.description like 'Customer Return' and t.hu_id not like '1Z%'

group by cast(t.start_tran_date+t.start_tran_time  - '1900-01-01 05:00' as date), t.item_number, i.dept_name, i.class_name, i.subclass_name

1 个答案:

答案 0 :(得分:0)

很可能,.buttons-wrapper{ display: inline-block; border: 1px solid grey; padding: 10px 5px; border-radius: 5px; } .buttons-wrapper .btn{ width: 200px; height: 30px; color: blue; font-weight: 600; } 中有多个行符合联接条件。结果,行相乘,聚合函数出错。

首先考虑在子查询中进行预聚合:

item_master
相关问题