2017-01-05 10 views
1

日付範囲がユーザー入力によって定義されている日付範囲による販売クエリがあります。結果を日ごとに分割したいと思います。すなわち、ユーザが01/01/16から01/15/16までの日付範囲を入力したとすると、毎日結果を破棄したいと思います。 私はDATENAME(DD、T1。[DocDate])を使用してそれを中断していますが、それは正常ですが、結果は正確ではありません。私は戻り値サブクエリで同じブレークを使用する必要があることを示しています。下記のフルクエリを参照してください: 売上クエリの結果を日ごとに破る方法

は(あなたの納品書クエリとしてすることにより、グループの同じ種類で)あなたの代わりにあなたのリターンのためのサブクエリの

SELECT 
'2016' as 'Year', 
t4.remarks as 'Department', 
DATENAME(DD,T1.[DocDate]) as 'Day', 
sum(t0.[quantity])-(ISNULL(p.quantity,0)) as 'Quantity', 
sum(t0.linetotal - t0.linetotal*t1.discprcnt/100)-(ISNULL(p.total,0)) as 'Total', 
sum(T0.[GrssProfit])-(ISNULL(p.profit,0)) as 'Profit $', 
(sum(T0.[GrssProfit])-(ISNULL(p.profit,0)))/(sum(t0.linetotal - t0.linetotal*t1.discprcnt/100)-(ISNULL(p.total,0)))*100 as 'Profit%' 

FROM INV1 T0 with (nolock) 
INNER JOIN OINV T1 with (nolock) on t0.docentry = t1.docnum 
INNER JOIN OSLP T2 with (nolock) on t0.SlpCode = t2.SlpCode 
LEFT JOIN OHEM T3 with (nolock) on t0.slpcode = t3.SalesPrson 
LEFT JOIN OUDP T4 with (nolock) on t3.dept = t4.Code 

--BEGINS QUERY FOR THE RETURNS-- 
left join (select t9.name as 'dept',sum(t5.quantity) as 'quantity',sum(t5.linetotal - t5.linetotal*t6.discprcnt/100) as 'total',sum(t5.grssprofit) as 'profit' 
from [dbo].[rin1] t5 with (nolock) 
inner join orin t6 with (nolock) on t5.docentry = t6.docentry 
INNER JOIN OSLP T7 with (nolock) on t5.SlpCode = t7.SlpCode 
LEFT JOIN OHEM T8 with (nolock) on t5.slpcode = t8.SalesPrson 
LEFT JOIN OUDP T9 with (nolock) on t8.dept = t9.Code 
INNER JOIN OITM T10 with (nolock) on t5.itemcode = t10.itemcode 
where t5.docdate between '[%1]' and '[%2]' and t10.invntitem = 'Y' 
and (t5.linetotal - (t5.linetotal*t6.discprcnt/100)) <> '0' 
group by t9.name) p on p.dept = t4.name 
--ENDS QUERY FOR THE RETURNS-- 

WHERE t1.docdate between '[%1]' and '[%2]' 
and t4.remarks is not null 
and t4.remarks = 'perfume provider' 
and (t0.linetotal - (t0.linetotal*t1.discprcnt/100)) <> '0' 

group by DATENAME(DD,T1.[DocDate]),t4.remarks,p.quantity,p.total,p.profit 
+1

質問を編集して現在のクエリと必要な結果を含め、Sap B1がインストールされていないユーザーの場合は、関連するテーブルのDDLとサンプルデータをDMLとして共有してください。 –

+0

ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

+0

ありがとうございます。私はちょうど編集し、完全なクエリといくつかの詳細を追加しました –

答えて

0

に感謝し、あなたの代わりにUNIONを使用する必要があります。あなたのGroup-Byは問題ありませんが、言及したように、サブクエリは悪いデータをもたらすでしょう。

あなたのデータには別の「出発点」があるときはいつでも、連合が行く方法です。

+0

しかし、私はUNIONを使用すると、売上と利益のために私はサブクエリを使用するので、売り上げからのリターンを差し引いて最終的な数値を得ることができます –

+0

UNIONの周りを選択してそこにデータをグループ化します。 – Overhed

+0

ですが、どうすればいいですか? –

関連する問題