私は、購入した作業ユニットの数と作業ユニットの消費したユニットの合計のうち、残りの作業ユニット数を毎月取得しようとしています。クローズの計算(過去を含む2つのビューの合計)
が、私は二つの可能性を試してみましたが、両方は欠陥があります:最初のテストでは
を、私は私が望む最後の行列ですべての月を示すために、毎月、毎年含まれている「ヶ」の表を作成しましたこれらのデータを使用して作成します。この1つでは、消費された作業ユニットがあるときはいつでもクローズしますが、そうでない場合は、最後のクローズを取得しないため、「空」です。
USE OTRS_Revised
SELECT [Customer], CASE WHEN [Year] < 2016 THEN 1 ELSE [Year] END AS [Year], CASE WHEN [Year] < 2016 THEN 0 ELSE [Month] END AS [Month], [Closing] AS Total, SUM([Closing])
OVER (PARTITION BY [Customer] ORDER BY [Year], [Month] ROWS UNBOUNDED PRECEDING) AS Closing
FROM [dbo].[WU_Closing_View]
WHERE [Customer] IN ('CustomerList')
GROUP BY [Customer], [Year], [Month], [Closing]
UNION ALL
SELECT '' AS Customer, CASE WHEN [Year] < 2016 THEN 1 ELSE [Year] END AS [Year], CASE WHEN [Year] < 2016 THEN 0 ELSE [Month] END AS [Month], '' AS Total, '' AS Sum_bought
FROM [dbo].Months
WHERE [Year] <= 2016
GROUP BY Year, Month
ORDER BY Customer, Year, Month
また、以下のクエリを使用して「月単位」にしようとしました。行ドンそれは一ヶ月のために働くが、私は、あなたが労働組合を行うとき年の毎月のアプローチでは2016年
SELECT
(SELECT SUM(Closing) AS Expr1
FROM OTRS_Revised.dbo.WU_Bought_View
WHERE (Customer LIKE 'SomeCustomer') AND (DATEADD(Year, Year - 1900, DATEADD(Month, Month - 1, DATEADD(day, 0, 0))) <= DATEADD(Year, 2016 - 1900, DATEADD(Month, 5 - 1, DATEADD(day, 0, 0))))
GROUP BY Customer)
+
(SELECT SUM(Closing) AS Expr1
FROM OTRS_Revised.dbo.WU_Consumed_View
WHERE (Customer LIKE 'SomeCustomer') AND (DATEADD(Year, Year - 1900, DATEADD(Month, Month - 1, DATEADD(day, 0, 0))) <= DATEADD(Year, 2016 - 1900, DATEADD(Month, 5 - 1, DATEADD(day, 0, 0))))
GROUP BY Customer) AS Expr1,
[Month]
FROM OTRS_Revised.dbo.Months
GROUP BY [Month]
こんにちは、残念ながら、私はdbo.Monthsの中に "Customer"カラムを持っていないので動作しません。(それらをすべて追加したり、テーブルを最新の状態に保つのは難しい)。最後に、データのない月はこのクエリでは表示されません –