2016-02-09 131 views
0

我试图写下面的查询。表格hnh包含每个包含productimage,范围代码(类型),项目编号,价格,描述等的设置产品列表。SALESORDERHISTORY是去年单个销售行的列表,其中包含帐户,itemnumber,rangecode,salesqty和confirdate列。SQL选择图像,具有子查询的聚合函数

查询中需要使用汇总函数来为每个选定客户的每个产品线选择最后3个月的销售额,对于12个月的销售额也是如此。这可能会改变或平均销售数量。

select hnh.image, 
    hnh.rangecode, 
    hnh.itemnumber, 
    hnh.producttype, 
    hnh.productdescription, 
    hnh.price, 
    count(distinct a.SalesQty) as '3MonthSales', 
    count(distinct b.SalesQty) as '12MonthSales', 
    hnh.CurrentStock 
    from HNHPRODUCTS hnh 
inner join (select SALESQTY, itemid, configid, account from SALESORDERHISTORY 
    where confirmeddate > DATEADD(month, -3, getdate())) a on a.rangecode = hnh.rangecode and a.itemnumber = hnh.itemnumber and a.account = '1234' 
inner join (select SALESQTY, itemid, configid, account from SALESORDERHISTORY 
    where confirmeddate > DATEADD(month, -12, getdate())) b on b.rangecode = hnh.rangecode and b.itemnumber = hnh.itemnumber and b.account = '1234' 

我见过好几个例子,但都只有一个子查询,一个聚合函数和没有图像。非常感谢。

回答

1

我花了相当长一段时间,但答案似乎是创建后,“从”比图像其他所有项目的子查询,然后通过主键加入回选择image列:

select hnh.image as image, f1, f2, f3, f4, f5, 3MonthSales.... 
from (select 
    hnh.ID as 't_id', 
    hnh.rangecode as 'F1', 
    hnh.itemnumber as 'F2', 
    hnh.producttype as 'F3', 
    hnh.productdescription 'F4', 
    hnh.price as 'F5', 
    count(distinct a.SalesQty) as '3MonthSales', 
    count(distinct b.SalesQty) as '12MonthSales', 
    ... 
    from HNHPRODUCTS hnh 
    group by hnh.ID, 
    hnh.rangecode, 
    hnh.itemnumber, 
    hnh.producttype, 
    hnh.productdescription, 
    hnh.price ... 
join (select SALESQTY, itemid, configid, account from SALESORDERHISTORY 
    where confirmeddate > DATEADD(month, -3, getdate())) a on a.rangecode = hnh.rangecode and a.itemnumber = hnh.itemnumber and a.account = '1234' 
join (select SALESQTY, itemid, configid, account from SALESORDERHISTORY 
    where confirmeddate > DATEADD(month, -12, getdate())) b on b.rangecode = hnh.rangecode and b.itemnumber = hnh.itemnumber and b.account = '1234') as x 
left join x on HNHPRODUCTS.ID = x.t_id 

如果有人有更好的解决方法,请更新