SQL Server 2008を使用していますが、この問題があります。異なる期間の合計金額を取得する方法
私は、ジョブフィールド、日付フィールド、コストフィールドを持つテーブルを持っています。日付フィールドには、特定のジョブで実行された日付が格納されますが、コストフィールドにはその日付に費やされた金額が保持されます(1つのジョブで数日かかることがあります)。
私は、異なるカラムでジョブを開くと0-7daysと8-30daysの間に費やされたコストの合計を得ます。それは、このような結果を表示する
select a.[Job No_], DATEDIFF(day, MIN(b.[Posting Date]), a.[Ending Date]) as [WIP Age],
SUM(b.[Total Cost])[Total WIP cost]
[0 - 7 days]=case
when (DATEDIFF(day, MIN(b.[Posting Date]), a.[Ending Date]) between 1 and 7) then
SUM(b.[Total Cost])
else 0
end,
[8 - 30 days]=case
when (DATEDIFF(day, MIN(b.[Posting Date]), a.[Ending Date]) between 8 and 30) then
SUM(b.[Total Cost])
else 0
end,
[> 30 days]=case
when (DATEDIFF(day, MIN(b.[Posting Date]), a.[Ending Date]) > 30) then
SUM(b.[Total Cost])
else 0
end
from [Job]a
right join [Job Ledger Entry]b
on b.[Job No_] = a.[No_]
group by a.[No_]
:
私はこれを試してみました - 7日、8
Job No_ WIP Age Total WIP cost 0 - 7 days 8 - 30 days > 30 days
0001 40 9526.18 0 0 9526.18
0002 27 1178.49 0 1178.49 0
0003 3 2838.94 2838.94 0 0
これは私が望むものではありません、私はすべてのコストが0の間で過ごしたいです - 30日および> 30日である。
私は、列名にスペースとその他の文字を使用することに驚いています! 'ジョブ'テーブルには、ジョブの1日のコストのエントリが含まれていますか?したがって、毎日1つのジョブコストが転記され、複数の日に合計する必要があるジョブコスト全体を得ることができますか?また、 'Job Ledger Entry'テーブルの[[投稿日]]列は、特定の日に基づいてクエリするのに使用されていますか? –
こんにちは、ブレント、ごめんなさい、スペースの使用。情報をより明確にするだけです。 'job'テーブルには各ジョブの詳細が含まれていますが、' Job Ledger Entry'にはそれぞれのジョブが異なる日に行うトランザクションが含まれています。例えば。ジョブ001は10日間トランザクションを持ち、毎日はコストに関係します(それぞれのトランザクションのエントリは 'job ledj entry table'に取り込まれます)。アイデアは、1-7日間、8-30日間など、ジョブ001で費やされた合計を知ることです。 – Abimbola
私はおそらく考えを開始していますが、まだ確信が持てません。私は実際に出力に対応するソースデータのサンプルを歓迎します。 –