У меня есть настоящая загадка с T-SQL ниже. На самом деле он работает либо с DATAP.Private=1
, либо с cast as int
на Right(CRS,1)
. То есть, если я раскомментирую DATAP.Private=1
, я получаю ошибку Conversion failed when converting the varchar value 'M' to data type int
, и если я затем удаляю это преобразование, запрос снова работает. С приведенным актом запрос работает только без Private=1
.
Я не могу на всю жизнь понять, как Private=1
может добавить что-либо к результирующему набору, что приведет к ошибке, если только Private
не является 'M', но Private
bit
поле!
SELECT
cast(Right(CRS,1) as int) AS Company
, cast(PerNr as int) AS PN
, Round(Sum(Cost),2) AS Total_Cost
FROM
DATAP
LEFT JOIN BU_Summary ON DATAP.BU=BU_Summary.BU
WHERE
DATAP.Extension Is Not Null
--And DATAP.Private=1
And Left(CRS,2)='SB'
And DATAP.PerNr Between '1' And '9A'
and Right(CRS,1) <> 'm'
GROUP BY
cast(Right(CRS,1) as int)
, cast(PerNr as int)
ORDER BY
cast(PerNr as int)