我想比較來自上一年和當前年份參數的數據。我創建了三個名爲#currentyear
,#previous_year
和#comparison_over_previous_year
的臨時表。在SQL Server中從兩個不同的臨時表中減去兩列
#currentyear
數據正在從存儲過程中提取,我也想從存儲過程中提取前一年的數據。當嘗試在執行存儲過程時傳遞DATEADD
函數時,T-SQL不喜歡它。現在,我在那裏傳遞了一個靜態數據。
我想從#currentyear
臨時表和#previous_year
臨時表中減去貨幣字段,但我有一段艱難的時間。
到目前爲止我的代碼是下面:
IF OBJECT_ID('tempdb..#currentyear') IS NOT NULL
DROP TABLE #currentyear
IF OBJECT_ID('tempdb..#previousyear') IS NOT NULL
DROP TABLE #previousyear
IF OBJECT_ID('tempdb..#comparison_over_previous_year') IS NOT NULL
DROP TABLE #comparison_over_previous_year
CREATE TABLE #currentyear
(
[Date] DATE,
[Carrier] VARCHAR(100),
[Direct Ceded Written Premium] MONEY,
[begofmonth] DATE
)
CREATE TABLE #previousyear
(
[Date] DATE,
[Carrier] VARCHAR(100),
[Direct Ceded Written Premium] MONEY,
[begofmonth] DATE
)
CREATE TABLE #comparison_over_previous_year
(
[Date] DATE,
[Carrier] VARCHAR(100),
[Direct Ceded Written Premium] MONEY,
[begofmonth] DATE
)
INSERT INTO #currentyear
EXECUTE [dbo].[rpt_written_premium_extract_CURRENT_YEAR_RPT-4518]
@StartDate = '20160101', @EndDate = '20161130',
@ResEQCarrierCd = 'Palomar'
INSERT INTO #previousyear
EXECUTE [dbo].[rpt_written_premium_extract_CURRENT_YEAR_RPT-4518]
--DATEADD(YEAR,-1,@StartDate) = '20160101'
--DATEADD(YEAR,-1,@EndDate) = '20161130'
@StartDate = '20150101', **--Using this static value from now as the script above is not playing nice**
@EndDate = '20151130', @ResEQCarrierCd = 'Palomar'
INSERT INTO #comparison_over_previous_year
SELECT
cy.[Date], cy.[Carrier],
cy.[Direct Ceded Written Premium] - py.[Direct Ceded Written Premium],
cy.[begofmonth]
FROM
#currentyear cy
JOIN
#previousyear py ON py.[Carrier] = cy.[Carrier]
----Selects the data in order to dump into SSRS
SELECT *
FROM #comparison_over_previous_year
SO我這裏有兩個問題:
之一是
DATEADD
功能無法通過EXEC
聲明傳遞和二是我一直試圖從減去
[Direct Ceded Written Premium]
列的值10和#previous_year
表。看起來我需要按承運人和乞討月份分組。去年可能沒有每個月的所有運營商。例如,2015年januray月份可能沒有palomar作爲運營商,但2016年1月份會。所以他們不需要被減去。如果palomar在兩年內都存在,那麼它將被減去。希望這是有道理的。
這裏是我想在SSRS輸出結果,當我導出到Excel:
這是兩個問題。選擇一個這個職位,編輯相應的職位 - 選擇另一個職位。這些感覺好像也可能是重複的,所以請確保您檢查並確認這些問題尚未得到解答。 –
它看起來像你不正確地使用DATEADD作爲參數。你會想要像'@StartDate = DATEADD(YEAR,-1,'20160101')'一樣使用它。 – Jerrad
@danfield沒有重複。我從其他存儲過程中獲得的數據集爲我提供了今年想要的內容。我希望從這個select語句變成存儲過程,就是將一列字段減去另一列字段。 – Lisbon