Итак, у меня есть этот запрос
select *
FROM
[JMNYC-AMTDB].[AMTPLUS].[dbo].PickTickets i WITH (NOLOCK)
INNER JOIN
[JMNYC-AMTDB].[AMTPLUS].[dbo].customer_store cs WITH (NOLOCK)
ON i.Company_code = cs.Company_code
AND i.Division_code = cs.Division_code
AND i.Customer_Number = cs.Customer_Number
AND i.ShipTo=cs.store_number
JOIN
[JMNYC-AMTDB].[AMTPLUS].[dbo].PickTickets_Packing ps1 WITH (NOLOCK)
ON i.Company_Code=ps1.Company_Code
AND i.Division_Code=ps1.Division_Code
AND i.PickTicket_Number=ps1.PickTicket_Number
JOIN
[JMNYC-AMTDB].[AMTPLUS].[dbo].Orders o WITH (NOLOCK)
ON i.Company_Code=o.Company_Code
AND i.Division_Code=o.Division_Code
AND i.Control_Number=o.Control_Number
LEFT JOIN
[JMNYC-AMTDB].[AMTPLUS].[dbo].Country cr WITH (NOLOCK)
ON cs.country =cr.country
LEFT JOIN
Packslip P ON I.COMPANY_CODE=P.CLIENTNAME
LEFT JOIN
Moret_shipper sh ON I.COMPANY_CODE=sh.CLIENTNAME
LEFT JOIN
CUSTOMER cu ON i.Customer_Number=cu.CUST_NUM
LEFT JOIN
(
SELECT packslip FROM PICKHEAD (NOLOCK)
WHERE CLIENTNAME='03'
) td3 ON I.PickTicket_number=td3.packslip
JOIN
[JMNYC-AMTDB].[AMTPLUS].[dbo].Picktickets_stage pst1 WITH (NOLOCK)
ON i.Company_Code=pst1.Company_Code
AND i.Division_Code=pst1.Division_Code
AND i.PickTicket_Number=pst1.PickTicket_Number
AND pst1.Stage_code='940READY'
LEFT JOIN
(
SELECT packslip FROM rf_log_all (NOLOCK)
WHERE action='DELETESO' AND clientname='03'
) td4 ON I.PickTicket_number=cast(td4.packslip as numeric)
Если я запускаю его просто так, кажется, все работает нормально.
Однако, как только я начинаю добавлять предложение where, я получаю странную ошибку преобразования.
Вот мое предложение where:
WHERE
i.company_code='03'
AND ps1.Packed_Status='E'
AND i.Warehouse_Code in ('DAYTO','SANFE','ALLLM')
AND td3.packslip is null
AND td4.packslip is null
При этом я получаю сообщение об ошибке при преобразовании типа данных nvarchar в числовой.
Если я закомментирую проверки td3 и td4, это сработает.
WHERE
i.company_code='03'
AND ps1.Packed_Status='E'
AND i.Warehouse_Code in ('DAYTO','SANFE','ALLLM')
--AND td3.packslip is null
--AND td4.packslip is null
Однако он также работает с оставшимися, но закомментирована балансовая единица.
WHERE
--i.company_code='03' AND
ps1.Packed_Status='E'
AND i.Warehouse_Code in ('DAYTO','SANFE','ALLLM')
AND td3.packslip is null
AND td4.packslip is null
Кто-нибудь знает, что может быть причиной этой ошибки. Это запрос, который мы использовали некоторое время, и эта проблема началась недавно. Если бы я знал, какая именно строка вызывает эту ошибку, я мог бы попытаться исправить ее, но я даже не уверен в этом.