2013-10-25 78 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