我还在不断提高我的查询编写技巧,我对使用平均最大等静态函数的select有一点问题。首先,我写了一个简单的基于单表的查询,它工作得很完美。
select e.Article, avg(e.Price) as 'Average', max(e.Price) as 'Max', min(e.Price) as 'Min' from pub.E_ArtPrice e
group by e.Article
order by e.Article
下一步是创建一些更复杂的东西来获取信息,这对我来说非常有用。
Select m.Part, m.Quantity, m.OnHand, m.postingdate, m.storagearea, p.MEM_PostingCode_ID, koss.Description, ko.Carrier, avg(e.price) as 'Average', max(e.price) as 'Max', min(e.price) as 'Min'
from pub.MLL_Movements m inner join pub.MEM_PostingCode p on (m.MEM_PostingCode_Obj = p.MEM_PostingCode_Obj)
left outer join pub.s_Carrier ko on (m.CostAccObject_Obj = ko.S_Carrier_Obj)
left outer join pub.s_CostCentre kos on (m.CostAccObject_Obj = kos.S_CostCentre_Obj)
left outer join pub.S_CostCentreSpr koss on (kos.CostCentre = koss.CostCentre)
left outer join pub.E_ArtPrice e on (m.Part = e.Article)
where p.MEM_PostingCode_ID = 'AUKJ'
我没有把group by子句放在这里,因为试了很多次都没有成功。
所有你的 select
栏以外的 aggregate columns
应在你 group by
因此,可以尝试以下的条款
Select m.Part, m.Quantity, m.OnHand, m.postingdate, m.storagearea, p.MEM_PostingCode_ID, koss.Description, ko.Carrier, avg(e.price) as 'Average', max(e.price) as 'Max', min(e.price) as 'Min'
from pub.MLL_Movements m inner join pub.MEM_PostingCode p on (m.MEM_PostingCode_Obj = p.MEM_PostingCode_Obj)
left outer join pub.s_Carrier ko on (m.CostAccObject_Obj = ko.S_Carrier_Obj)
left outer join pub.s_CostCentre kos on (m.CostAccObject_Obj = kos.S_CostCentre_Obj)
left outer join pub.S_CostCentreSpr koss on (kos.CostCentre = koss.CostCentre)
left outer join pub.E_ArtPrice e on (m.Part = e.Article)
where p.MEM_PostingCode_ID = 'AUKJ'
group by m.Part, m.Quantity, m.OnHand, m.postingdate, m.storagearea, p.MEM_PostingCode_ID, koss.Description, ko.Carrier