2013-10-25 42 views
0

我有销售额,其中一些发票,有些没有。我想添加每个订单的发票行数(salesid)的信息。我希望每个销售线的这种信息在一个订单内是相同的。已开票行的销售状态= 3。这里是我的尝试:“每个GROUP BY表达式必须至少包含一列不是外部引用发票总额的份额(总和组)

SELECT 
salesid,linenum,itemid,salesstatus,name,lineamount 
,(SELECT SUM(CASE WHEN salesstatus=3 THEN lineamount ELSE 0 END) as expr1) invoiced 
,(SELECT SUM (lineamount) as expr2 GROUP BY salesid) total 
,invoiced/total 
FROM T.SALESLINES 
GROUP BY 
salesid,linenum,itemid,salesstatus,name,lineamount 

分组由salesid不起作用给错误 我想代码似乎是合乎逻辑的,但不起作用。那么我应该如何根据salesid进行分组以总计划分开发票?

回答

0

尝试

Select *,invoiced/total as ColName from (
SELECT 
salesid,linenum,itemid,salesstatus,name,lineamount 
,(SELECT SUM(CASE WHEN salesstatus=3 THEN lineamount ELSE 0 END From T.SALESLINES) as invoiced 
,(SELECT SUM (lineamount)From T.SALESLINES GROUP BY salesid) as total 
FROM T.SALESLINES) source 
GROUP BY 
salesid,linenum,itemid,salesstatus,name,lineamount,invoiced,total 
+0

都能跟得上。 _Subquery返回的值超过1个__ – relaj

+0

找到的解决方案! (从T.salesline T2中选择(SELECT SUM(CASE WHEN salesstatus = 3 THEN line number ELSE 0 END))其中T2.salesid = T1.salesid组(由T2.salesid) / (select sum(T2.lineamount)from T.salesline T2其中T2.salesid = T1.salesid组,由T2.salesid))作为'发票%' 来自T.salesline T1' – relaj