Сообщение об ошибке совершенно ясно.Когда вы используете подзапрос вместо не таблицы, а значения, вы должны убедиться, что возвращается только одно значение, иначе вы получите это сообщение об ошибке.
Дальнейшее изучение вашего запроса показывает, что вы ...делаем это неправильно.Например,
(
SELECT
PartnerName
FROM
Ms_Partner
WHERE
PartnerID = x.SupplierID
) SupplierName
Кажется, здесь вы хотите получить имя, связанное с каждым SupplierID.Вы не должны делать подзапросы в разделе SELECT
таким образом.Помните: сначала оценивается FROM
, затем WHERE
, затем SELECT
.Что вы на самом деле указали этой базе данных, так это попытайтесь вернуть ЕДИНОЕ значение как SupplierName: это будет работать, только если ваш запрос имеет только один SupplierID.
Вам нужно начать думать с объединениями.Вот как вы должны написать свой запрос:
SELECT
*
FROM
(
SELECT
SupplierID,
CurrencyAP AS Currency,
Ms_PartPriceSupplier.UnitPrice AS Price,
PartID,
Ms_Partner.PartnerName as SupplierName
FROM
(
SELECT
PartID,
SupplierID,
CurrencyAP,
MAX (LastUpdateDate) AS Tgl
FROM
Ms_PartPriceSupplier
WHERE
PartID = 'MCRX-MX023-LF-KGX'
GROUP BY
PartID,
SupplierID,
CurrencyAP
) x
inner join Ms_Partner on PartnerID = x.SupplierID
inner join Ms_PartPriceSupplier on SupplierID = x.SupplierID AND PartID = x.PartID AND LastUpdateDate = x.Tgl
) y
UNION ALL
SELECT
PartnerID AS SupplierID,
'' AS Currency,
0 AS Price,
'' AS PartID,
PartnerName AS SupplierName
FROM
Ms_Partner
WHERE
PartnerID NOT IN (
SELECT DISTINCT
SupplierID
FROM
Ms_PartPriceSupplier
WHERE
PartID = 'MCRX-MX023-LF-KGX'
)