我有2個表值函數是非常相似的,唯一的區別是,我需要一個額外的Max()
調用第二個。我想將它們合併成一個,但我不知道如何去做。如果聲明在表中的值函數
第一個功能
ALTER FUNCTION [DayTrade].[udf_GetTotalLast90Days]
(
@Date datetime
)
RETURNS TABLE
AS
RETURN
(
SELECT Acct, Sum(AGGCnt) As AGGCnt, AGGNumb
FROM DT.vwGet_CountHist
WHERE (PostDate >= @Date - 90) AND (PostDate <= @Date)
GROUP BY Acct, AGGNumb
)
二功能
ALTER FUNCTION [DayTrade].[udf_GetTotalLast90Days]
(
@Date datetime
)
RETURNS TABLE
AS
RETURN
(
SELECT Acct, Sum(AGGCnt) As AGGCnt, Max(AGGNumb) As AGGNumb
FROM DT.vwGet_CountHist
WHERE (PostDate >= @Date - 90) AND (PostDate <= @Date)
GROUP BY Acct
)
正如你所看到的第二個區別是我加入Max(AGGNumb) As AGGNumb
和去除分組依據之一。我試圖改變這一點,並通過一個額外的變量@Agg這是一個位字段,然後使用IF statement
來選擇使用哪個函數,但我無法讓它工作。
有關如何將這兩個函數合併爲1的任何建議?
感謝
我更新了上面的代碼,它在兩個where子句中都是@Date而不是@businessDate,這是否有所作爲? – Taryn 2011-03-04 20:28:57
+1。看起來比我的方法好 – Simon 2011-03-04 20:30:26
@bluefeet:你仍然需要一個控制變量來決定運行哪個查詢。你可能有2個參數來控制這個 – gbn 2011-03-04 20:32:27