是否有更好的方法来编写此联合查询

时间:2016-06-30 09:11:32

标签: sql-server

您好我正在尝试从同一日期的不同表中获取浪费值的总和。我可以从下面的查询中获得所需的输出,但它看起来太大而且也重复了。是否有任何其他方法来缩小查询。谢谢提前

npm install --save mysql

1 个答案:

答案 0 :(得分:0)

对这种数据结构不要期望太多,但你至少可以从括号中得到公共部分:

select SUM(Pur_Rate * Item_Qty) as WasteValue from (
select im.Pur_Rate, wd.Item_Qty, wm.Waste_Date, im.Type_Code, im.Branch_Code
from [Item Master] im 
inner join [waste Details] wd on wd.Item_Code=im.Item_Code
inner join [waste Master] wm on wd.Waste_No=wm.Waste_No 
union
select im.Pur_Rate, wd.Item_Qty, wm.Waste_Date, im.Type_Code, im.Branch_Code
from [Item Master] im 
inner join [Counter Waste Details] wd on wd.Item_Code=im.Item_Code
inner join [Counter Waste Master] wm on wd.Waste_No=wm.Waste_No) Wastage
where CONVERT(date,Waste_Date,120) BETWEEN '2016-06-30' and '2016-06-30' 
and Type_Code=1 and Branch_Code=0

如果我是你,我会考虑将具有相似目的的表格(例如,废物大师和反废物大师)组合在一起,并有一个标志来区分这两者。