2013-10-25 2 views
0

나는 판매 라인을 가지고 있는데, 그 중 일부는 인보이스 발행 된 것입니다. 나는 각 order (salesid)마다 invoiced lines share의 정보를 추가하고 싶다. 각 판매 라인의 정보가 한 주문 내에서 동일하게되기를 바랍니다. 인보이스 된 회선의 판매 상태는 3입니다. 여기 내 시도이다 ". 표현하여 각 그룹이 외부 참조 아닌 열이 적어도 하나 있어야합니다 을"총 인보이스 발행 지분 (합계 그룹 수)

salesid에 의해
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에 의하여 총계에 의하여 청구서를 나누기 위하여 분류해야합니까?

답변

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

아니보십시오. _ 서브 쿼리가 1 개 이상의 값을 반환했습니다 _ – relaj

+0

발견 된 솔루션! '(T2Salesid 별 T2.salesid = T1.salesid 그룹) (SUM (판매 조건 = 3 다음 THEN 라인 번호 ELSE 0 END) 선택) / (선택 합계 T2.lineamount) T.salesline T2 여기서 T2.salesid = T1.salesid 그룹 by T2.salesid)) 'Invoiced %' from T.salesline T1 ' – relaj