Может ли кто-нибудь сказать мне, как решить эту проблему?Подзапрос возвратил более 1 значения. когда подзапрос используется как выражение.in SQL Server
Вот мой код
подзапросов:
SELECT
A.StoreNo, C.[date], A.ProductBarCode, A.ProductQty
INTO
##inv1
FROM
#calender C
OUTER APPLY
(SELECT TOP 100 PERCENT *
FROM ##Temp I
WHERE I.Date < C.DATE
AND StoreNo IN (SELECT StoreNo FROM ##StoreList)
ORDER BY I.Date) A
OPTION (maxrecursion 0)
Я использовал 100 топ процентов, потому что у меня есть более чем 1000 productBarcode для каждого storeNo, если я выбираю топ 1 его показ только один productBarcode повторяющееся значение для следующего день.
Declare
@pheader nvarchar(Max), @sql_pivot nvarchar(max)
Begin
SELECT
@pheader = STUFF((SELECT distinct ',' + QUOTENAME([StoreNo])
FROM ##StoreList
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
--SET @pheader = LEFT(@pheader, LEN(@pheader) - 1)
SET @sql_pivot = 'SELECT *
FROM
(SELECT
S.[StoreNo], p.Date as Date,
p.ProductBarCode as ProductBarCode,
ISNULL(i.productqty - (SELECT ProductQty as runningsum
FROM #Stock st
WHERE st.date <= i.date
AND st.storeno = i.storeno
AND st.ProductBarCode = i.ProductBarCode), i.productqty) as ProductQty
FROM #inventory i
LEFT JOIN ##StoreList S ON S.StoreNo = i.StoreNo
LEFT JOIN #Stock st ON st.StoreNo = i.StoreNo AND st.ProductBarCode = i.ProductBarCode AND st.Date = i.Date
RIGHT JOIN ##product p ON i.Date = P.Date and p.ProductBarCode = i.ProductBarCode
-- where p.ProductBarCode IN(2300007115072,2300012213046,2300012712075)
GROUP BY S.storeNo, i.StoreNo, i.ProductBarCode, i.Date, p.ProductBarCode, p.Date, i.ProductQty) p
PIVOT (SUM(ProductQty)
FOR [StoreNo] IN ('+ @pheader+'))Pvt'
EXECUTE sp_executesql @sql_pivot
Я не могу получить 3:57 storeNo в то время, если я выбрать более 10 его показ этой ошибки
Subquery вернулся более чем на 1 значение. Это недопустимо, если подзапрос следует за =,! =, <, < =,>,> = или когда подзапрос используется как выражение.
Я использую SQL Server.
Сообщение об ошибке объясняет проблему довольно четко. У вас есть подзапрос, возвращающий более одного значения. Итак, где у вас есть подзаголовок? Я вижу только один, который рассказывает вам, где именно происходит эта проблема. Поэтому извлеките эту часть и выясните, что возвращает более одной строки для этого запроса. –