Я должен сказать, что ваши соглашения об именах не совсем прозрачны!
Не зная схем для ваших таблиц, сложно сказать наверняка, но я думаю, что у вас возникли проблемы с этим подзапросом:
(SELECT COCODE,CTPAPECOD,CTPAPPCOD FROM CTPY33PAYRP
WHERE CTPY33PAYRP.COCODE = @CompanyCode AND CTPY33PAYRP.CTPAPECOD =@EmpCode
AND CTPY33PAYRP.COCODE = @CompanyCodeAND CTPY33PAYRP.CTPAPPCOD=@PayCode) As PayCode_Check,
и с этим подзапросом:
(SELECT RPCOL,RPPCOD
FROM PY11RPTFPD,CTPY33PAYRP
WHERE CTPY33PAYRP.CTPAPPCOD=PY11RPTFPD.RPPCOD)
Вы выбираете несколько столбцов из одной таблицы в первом случае и из объединения двух таблиц во втором случае. В каждом подзапросе нет ничего, что ограничивало бы результаты одной строкой. Если вы собираетесь включить подзапрос в список выбора, то подзапрос должен возвращать одну строку на строку в вашем основном запросе. Кроме того, я никогда не видел подзапрос с несколькими столбцами.
Поскольку я не имею ни малейшего представления о том, для чего предназначен запрос, из ваших таблиц и имен столбцов я не могу дать вам однозначного совета о том, как исправить синтаксические ошибки. Я бы сказал, оставьте ваши подвыборы в один столбец каждый . Это то, что сообщение об ошибке говорит вам. Также следует либо соотнести подзапросы с основным запросом, чтобы было возможно только одно значение, либо использовать статистическую функцию в подзапросах, чтобы гарантировать, что для каждой записи в основном запросе возможно только одно значение.
Кроме того, я также скажу, что вы должны изучить синтаксис соединения ANSI. Поначалу это кажется сложным, но как только вы привыкнете, это ваш друг.