2017-08-04 82 views
0

我有以下代碼,它指向DateDimension,它計算出業務開放時間和關閉我們的實際分鐘數。我希望使用查詢的輸出傳遞給我的主要查詢,以確定業務處於打開狀態的總分鐘數。這將允許我在必要時排除銀行假期和星期日。但是我在創建函數時遇到了問題。無法找到列「dbo」或用戶定義的函數或聚合「dbo.GetWorkingDaysMin」,或名稱不明確。在查詢中使用UDF函數

爲此查詢我希望這個樣子

SELECT dbo.GetWorkingDaysMin([WebLeadRecd_DKey],[ContactSucces_DKey]), COLUMN1, column2 etc AS Name 
FROM [dbo].[TEST_DATES] 

這低於

alter FUNCTION GetWorkingDaysMin 
    ( 
    @Date1 INT, 
    @Date2 INT 
    ) 

    RETURNS table AS 
    RETURN 
    (

    SELECT SUM(TotalMinsOpen) AS TotalMinOpen, SUM(TotalMinsClosed) AS TotalMinClosed, 
    FROM [dbo].[DIM_DATE] 
    WHERE DateKey BETWEEN @Date1 AND @Date2 

    ) 

功能我只是想知道,如果這是排除節假日和週日的最好方式,業務開放時間爲週一至週五上午8點至下午6點,上午8點至下午1點。也許你也可以在下一個階段提出建議,我正在考慮使用case語句來做一些生活化處理,但是我是否將myseld設置爲失敗,或者有更好的方法?

回答

0

您已經定義了一個表值函數,因爲您正在返回兩個值。然後你將它用作標量函數。相反,將其稱爲:

SELECT wdm.*, td.* 
FROM dbo.TEST_DATES td CROSS APPLY 
    dbo.GetWorkingDaysMin(td.WebLeadRecd_DKey, td.ContactSucces_DKey) wdm;