Возможно ли связать внешний запрос с внутренним запросом в контексте соединения? «Где (sid.ItemID = i.itemID)» внутреннего запроса дает мне ошибку. Я думал, что сделал это в прошлом, поэтому я просматриваю все мои сохраненные процедуры, но, видимо, я сделал какую-то замену, чтобы заставить его работать. Я подозреваю, что могу удалить эту строку, и она будет работать, но более эффективна ли она с этой внутренней фразой?Внешний запрос ссылки SQLServer
SELECT departmentName
, supplierName
, so.SalesOrderID
, ss.warehouseInvoiceNo
, ss.transactionNo
, ss.storeID
, s.storeName
, s.storeNo
, tr.transactionDate
, p.period
, sooos.salesOrderID
, sooos.salesOrderOutOfStockID
, sooos.itemID
, i.itemNo
, i.itemName
, i.pack
, i.unitSize
, quantity
, wi.available
FROM SalesOrderOutOfStock sooos
JOIN Item AS i ON i.ItemID = sooos.ItemID
JOIN SalesOrder so ON so.SalesOrderID = sooos.SalesOrderID
JOIN WarehouseInventory wi ON wi.ItemID = sooos.ItemID
JOIN Store s ON s.StoreID = so.StoreID
JOIN InvoiceOrderRelationship ior ON ior.SalesOrderID = so.SalesOrderID
JOIN StockSale ss ON ss.WarehouseInvoiceNo = ior.WarehouseInvoiceNo
JOIN TransactionRegister tr ON tr.TransactionNo = ss.TransactionNo
JOIN Period p ON p.PeriodID = tr.PeriodID
JOIN Department d ON d.DepartmentID = i.DepartmentID
LEFT OUTER JOIN (SELECT TOP 1 itemID
, supplierID
FROM SupplierInvoiceDetail sid
JOIN SupplierInvoice si ON si.SupplierInvoiceID = sid.SupplierInvoiceID
--where (sid.ItemID = i.itemID)
order by InvoiceDate desc
--NEED AN ORDER BY HERE
) AS lastSupplier ON lastSupplier.ItemID = i.ItemID
JOIN supplier su ON su.SupplierID = Isnull(lastSupplier.supplierID, i.supplierID)
WHERE ss.WarehouseInvoiceNo = 10000000
- $ P {InvoiceNo}
hmmm ... не уверен, почему он отформатирован так –
Используйте ['OUTER APPLY'] (https://technet.microsoft.com/en-us/library/ms175156%28v=sql.105%29. aspx) вместо 'LEFT JOIN', это даст вам доступ к внешним полям. – GarethD
Форматирование: [Как отформатировать мои сообщения с помощью Markdown или HTML] (http://stackoverflow.com/help/formatting) (Или вы можете просто выделить блок кода и нажать кнопку '{}') –