2017-02-28 9 views
0

皆さん、ありがとうございます。私は、以下に示すようにDocumentNoWhscodeと各文書のNetAmmountを取得するクエリを書かれている:
SQLサーバーの合計の合計

SELECT t1.whscode, 
CASE WHEN t0.[DiscPrcnt]>0 then ((sum(t1.LineTotal) -isnull(t0.dpmamnt,0))- ((sum(t1.LineTotal)-isnull(t0.dpmamnt,0)) * t0.[DiscPrcnt]/100)) +t0.VatSum 
ELSE ((sum(t1.LineTotal)-isnull(t0.dpmamnt,0))) END 
as 'NetAmount',t0.docnum 
from [dbo].[OINV] T0 (NOLOCK) INNER JOIN [dbo].[INV1] T1 (NOLOCK) ON T0. [DocEntry] = T1.[DocEntry] 
where t0.docdate between '02-09-17' and '02-10-17' and 
t1.WhsCode='kidst'and t0.CANCELED!='Y' and t1.targettype!=13 
group by T0.[CardName],t0.[taxdate],t0.[docduedate], T0.[DocStatus], t0.[doctotal]-t0.[vatsum], 
t1.whscode,t0.DocNum,t0.usersign,t0.DiscPrcnt,t0.dpmamnt,t0.vatsum 
having (sum(t1.LineTotal)-isnull(t0.dpmamnt,0))>0 


出力:

|whscode| NetAmount | docnum| 
    |KIDST | 2147.419293 |3411592| 
    |KIDST | 19.000011 |3411670| 
    |KIDST | 23.380000 |3411314| 
    |KIDST | 50.000000 |3412061| 
    |KIDST | 268.720000 |3412000| 
    |KIDST | 69.930000 |3412289| 

を今私はWhscodeとして出力を取得したいと思いNetAmountのようなもの:

|Whscode| NetAmount | 
    KIDST----2578.449 

sum(大文字と小文字を区別)のエラーを投げる場合集約またはサブクエリを含む式で集計関数を実行することはできません。
どうかお手伝いしますか?

+0

私はその同じエラーを示すも削除した場合(での選択とグループの両方から)あなたのクエリから –

+0

をフィールド「DOCNUM」を削除します。SELECT t1.whscode、 sum(ケース合計t0。[DiscPrcnt]> 0)(sum(t1.LineTotal)-isnull(t0.dpmamnt、0)) - ((合計(t1.LineTotal)-isnull(t0 .dpmamnt、0))* t0。[DiscPrcnt]/100))+ t0.VatSum ELSE((sum(t1.LineTotal)-isnull(t0.dpmamnt、0))))END) として 'NetAmount' [DocEntry] = [DocEntry] ここで、t0.docdateは'02 -09-17 'となります([dbo]。[OINV] T0(NOLOCK)INNER JOIN [dbo]。 '02 -10-17 'と t1.WhsCode =' kidst ' とt0.​​CANCELED!=' Y 'とt1.targettype!= 13 グループ t1.whscode –

答えて

1

これを試してください:

;with cte as (
SELECT t1.whscode, 
CASE WHEN t0.[DiscPrcnt]>0 then ((sum(t1.LineTotal) -isnull(t0.dpmamnt,0))- ((sum(t1.LineTotal)-isnull(t0.dpmamnt,0)) * t0.[DiscPrcnt]/100)) +t0.VatSum 
ELSE ((sum(t1.LineTotal)-isnull(t0.dpmamnt,0))) END 
as 'NetAmount',t0.docnum 
from [dbo].[OINV] T0 (NOLOCK) INNER JOIN [dbo].[INV1] T1 (NOLOCK) ON T0. [DocEntry] = T1.[DocEntry] 
where t0.docdate between '02-09-17' and '02-10-17' and 
t1.WhsCode='kidst'and t0.CANCELED!='Y' and t1.targettype!=13 
group by T0.[CardName],t0.[taxdate],t0.[docduedate], T0.[DocStatus], t0.[doctotal]-t0.[vatsum], 
t1.whscode,t0.DocNum,t0.usersign,t0.DiscPrcnt,t0.dpmamnt,t0.vatsum 
having (sum(t1.LineTotal)-isnull(t0.dpmamnt,0))>0 
) 
select whscode,sum(Netamount) as NetAmount 
from cte 
group by whscode 
+0

と同じエラーです。集約またはサブクエリを含む式に対して集計関数を実行することはできません。 –

+0

あなたは 'Temptable'でそれを挿入できますか? 'NetAmount'の合計を取得します –

+0

はい、私は同じ運がまだ試してみました。同じエラーが –