【问题标题】:SQL Server - Removing WHERE Clause removes result setSQL Server - 删除 WHERE 子句会删除结果集
【发布时间】:2016-05-12 13:43:59
【问题描述】:

我对这个查询有一个奇怪的问题。当我按原样运行时,我得到一个结果集,但是当我以任何方式更改 WHERE 子句甚至删除它时,它会完全消除我的整个结果集。关于为什么会这样的任何想法?这是在一个旧的、糟糕的供应商平台上,不幸的是,我无法获得管理员访问权限,所以我所能做的就是运行报告,并且有限。

SELECT 
    (CASE WHEN SUBSTRING(VO.AR090_REFERENCE, 1, 1) = 'X' THEN 'CLUB' WHEN LEFT(RIGHT(VO.AR090_REFERENCE, 5), 2) = 'IP' THEN 'IP' ELSE 'CAMP' END ) AS TYPE, 
    CONVERT(NVARCHAR, VO.AR090_ISS_DATE, 101) AS SETUP, 
    VO.AR090_DESC AS FUNDER, 
    VO.AR090_REFERENCE AS VOUCH_NUM, 
    CHECKSUM(VO.AR090_REFERENCE) AS VOUCH_PARM, 
    CONVERT( NVARCHAR, VO.AR090_UPD_STAMP, 101 ) AS MODIFIED, 
    VO.AR090_AMT AS AMT, 
    VO.AR090_AMT_APPLIED AS USED, 
    VO.AR090_AMT - VO.AR090_AMT_APPLIED AS REMAIN 

FROM AR090_VOUCHER VO  
    LEFT OUTER JOIN AR020_TRANSACTIONS AR2 ON VO.AR090_ORG_CODE = AR2.AR020_ORG_CODE AND VO.AR090_REFERENCE = AR2.AR020_CC_CHECK AND AR2.AR020_TRANS_TYPE = 'VCH' 
    LEFT OUTER JOIN ER100_ACCT_ORDER AO ON AO.ER100_ORG_CODE = AR2.AR020_ORG_CODE AND AO.ER100_ORD_NBR = AR2.AR020_ORD_NBR 

WHERE 
    (VO.AR090_AMT - VO.AR090_AMT_APPLIED) > 0 

GROUP BY 
    VO.AR090_ISS_DATE,  
    VO.AR090_REFERENCE, 
    VO.AR090_AMT, 
    VO.AR090_AMT_APPLIED, 
    CONVERT( NVARCHAR, VO.AR090_UPD_STAMP, 101 ), 
    AR2.AR020_TRANS_TYPE, 
    AR2.AR020_CC_CHECK ,
    VO.AR090_DESC

ORDER BY 
    (CASE WHEN SUBSTRING( VO.AR090_REFERENCE, 1, 1 ) = 'X' THEN 'CLUB' WHEN LEFT(RIGHT(VO.AR090_REFERENCE, 5 ), 2) = 'IP' THEN 'IP' ELSE 'CAMP' END ) DESC, 
    SUBSTRING( VO.AR090_DESC, 13, LEN(VO.AR090_DESC) - 12 )

【问题讨论】:

  • 为什么是 GROUP BY? (我看不到没有聚合函数。)
  • 因为他确实想杀死重复;)
  • 你的意思是 OP 想要SELECT DISTINCT
  • 您如何访问数据? SSMS?您确定查询正在完成并且不返回任何数据,而不是永远运行/超时/导致未报告的错误?
  • @JohnPasquet,是的,我认为你是对的。当我更新我的 dbms 时,它开始出现子字符串错误,所以我认为某处有一个空值。好电话!

标签: sql sql-server database reporting


【解决方案1】:

没有。我看不到(正确)删除 where 子句会导致 LESS 数据的情况。要么这是一个错误(这将是一个非常罕见的错误,或者是一个完全没有维护的系统才能显示出来),或者你显然不只是删除他的 where 子句(通过逻辑推论)。

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 2014-10-15
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多