2017-07-31 111 views
0

以下查詢用於報表,該報表在查詢時仍然顯示實時數據,但在Management Studio中運行查詢時儘管消息查詢已成功完成,但仍未收到任何結果'查詢成功執行但沒有返回結果

我不得不聲明@Date參數,我認爲我已經在查詢頂部正確完成了。

DECLARE @Date datetime; 

BEGIN 
    SET @Date = 27/07/2017; 
END 

SELECT  CAST(CASE WHEN (SOTD_STWH_CODE = 'HPP SHEF') THEN DATE - (CASE 
DATEPART(dw, DATE) WHEN 2 THEN 3 ELSE 1 END) ELSE DATE END AS date) AS 
ShipDate, 
         DeFactoUser.F_SO_Transaction.SOTR_CUST_CODE, 
DeFactoUser.F_SO_Transaction_Details.SOTD_HEAD_NO, 
DeFactoUser.F_SO_Transaction.SOTR_DLSC_CODE, 
         DeFactoUser.F_SO_Transaction_Details.SOTD_STWH_CODE, 
DeFactoUser.F_SO_Transaction_Details.SOTD_STRC_CODE, 
DeFactoUser.F_SO_Transaction_Details.SOTD_QTY_UNITS_ORDERED, 

DeFactoUser.F_SO_Transaction_Details.SOTD_QTY_UNITS_OUTSTANDING, 
DeFactoUser.F_SO_Transaction_Details.SOTD_QTY_UNITS_PICKED, 

DeFactoUser.F_BM_Transactions_Details.BMTD_BMTR_SYS_NO, 
DeFactoUser.F_BM_Transactions_Details.BMTD_QTY_OUTSTANDING, 
ISNULL(CAST(BaseOn.baseon AS varchar), '') AS BaseOn, 
         CASE BaseOn.baseonstat WHEN '99' THEN 'Complete' WHEN 
'98' THEN 'Outstanding' WHEN '1' THEN 'open' ELSE '' END AS BaseOnStatus, 
DeFactoUser.F_SL_Customers.CUST_NAME 
FROM   DeFactoUser.F_SL_Customers INNER JOIN 
        DeFactoUser.F_SO_Transaction_Details WITH (NOLOCK) INNER 
JOIN 
         DeFactoUser.F_ST_Products WITH (NOLOCK) ON 
DeFactoUser.F_SO_Transaction_Details.SOTD_STRC_CODE = 
DeFactoUser.F_ST_Products.STRC_CODE INNER JOIN 
         DeFactoUser.F_SO_Transaction WITH (NOLOCK) ON 
DeFactoUser.F_SO_Transaction_Details.SOTD_HEAD_NO = 
DeFactoUser.F_SO_Transaction.SOTR_SYS_NO INNER JOIN 
         tbl_DFBI_Date ON 
DeFactoUser.F_SO_Transaction.SOTR_PROMISED_DATE = tbl_DFBI_Date.Date ON 
         DeFactoUser.F_SL_Customers.CUST_CODE = 
DeFactoUser.F_SO_Transaction_Details.SOTD_CUST_CODE LEFT OUTER JOIN 
         DeFactoUser.F_BM_Transactions INNER JOIN 
         DeFactoUser.F_BM_Transactions_Details ON 
DeFactoUser.F_BM_Transactions.BMTR_SYS_NO = 
DeFactoUser.F_BM_Transactions_Details.BMTD_BMTR_SYS_NO ON 
         DeFactoUser.F_SO_Transaction_Details.SOTD_SYS_NO = 
DeFactoUser.F_BM_Transactions_Details.BMTD_ORDER_LINK_NUMBER LEFT OUTER JOIN 
          (SELECT  RIGHT(SOTR_BASED_ON_REF, 7) AS link, 
SOTR_STATUS AS baseonstat, SOTR_SYS_NO AS baseon 
          FROM   DeFactoUser.F_SO_Transaction AS 
F_SO_Transaction_1 
          WHERE  (SOTR_CUST_CODE = 'h075') AND 
(SOTR_BASED_ON_REF > '0')) AS BaseOn ON 
CAST(DeFactoUser.F_SO_Transaction_Details.SOTD_HEAD_NO AS varchar) = 
BaseOn.link 
WHERE  (DeFactoUser.F_ST_Products.STRC_NI_CODE = 'panelcut') AND 
(DeFactoUser.F_ST_Products.STRC_ANAL1 = '1033') AND 
(DeFactoUser.F_SO_Transaction_Details.SOTD_SOTR_TYPE = 10) AND 
        (DeFactoUser.F_SO_Transaction.SOTR_CUST_CODE <> 'h075') 
AND (DeFactoUser.F_SO_Transaction.SOTR_STATUS < '99') AND (CASE WHEN 
(SOTD_STWH_CODE = 'HPP SHEF') 
        THEN DATE - (CASE DATEPART(dw, DATE) WHEN 2 THEN 3 ELSE 1 
END) ELSE DATE END <= @Date) 

有關我如何查看結果的任何建議?

+0

'27/07/2017'(整數除法)的結果是'0',它隱式轉換爲'DATETIME'1900-01-01'。看看缺少一對引號可以做什麼?你想'SET @Date ='20170727''。 –

+0

啊,非常有意義,謝謝! – Neal1581

+0

請不要破壞你的帖子。一旦你發佈了一個問題,你已經將內容授權給了Stack Overflow社區(在CC-by-SA許可下)。如果您想取消關聯此帳戶與您的帳戶關聯,請參閱[解除請求的正確途徑是什麼?](http://meta.stackoverflow.com/questions/323395/what-is-the-proper-route-換一個 - 解離 - 請求)。 – Bugs

回答

1

您需要以下初始化日期:

SET @Date = '20170727'; -- Format as YYYYMMDD which is locale neutral 

什麼您目前擁有的是,27除以7在2017年劃分這些都是整數,因此結果爲0。然後,這個數字轉換爲datetime,這不會導致你想要的日期。

您最好堅持日期或日期/時間值的ISO 8601格式。您可以在DATETIME文檔中閱讀更多內容。