2017-07-31 134 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文档中阅读更多内容。