У меня есть странная проблема с этим запросом. Когда я запускаю это как есть, я получаю набор результатов, однако, когда я изменяю предложение 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)
Почему GROUP BY? (Я не вижу никаких агрегатных функций.) – jarlh
Потому что он хочет убить дубликаты;) – TomTom
Интересно, есть ли у вас какие-то нули, которые предложение where непреднамеренно пропускает. –