2016-05-12 3 views
0

У меня есть странная проблема с этим запросом. Когда я запускаю это как есть, я получаю набор результатов, однако, когда я изменяю предложение WHERE любым способом или даже удаляю его, он полностью исключает весь мой набор результатов. Любые идеи относительно того, что это может быть? Это на старой, дерьмовой платформе поставщика, к сожалению, я не могу иметь доступ администратора, поэтому все, что я могу сделать, это запустить отчеты и ограничить их.SQL Server - Удаление предложения 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) 
+1

Почему GROUP BY? (Я не вижу никаких агрегатных функций.) – jarlh

+0

Потому что он хочет убить дубликаты;) – TomTom

+0

Интересно, есть ли у вас какие-то нули, которые предложение where непреднамеренно пропускает. –

ответ

0

Нет. Я не вижу ситуации, когда (правильно) удаление предложения where приведет к получению данных LESS. Либо это ошибка (и это будет ОЧЕНЬ редкая ошибка, либо полностью не поддерживаемая система для ее появления), или вы, очевидно, не просто удаляете его там, где предложение (по логическому вычету).