Sql server SQLServer引用外部查询
是否可以在连接上下文中从内部查询引用外部查询?内部查询的“where(sid.ItemID=i.ItemID)”给了我一个错误。我想我以前是这样做的,所以我搜索了我所有存储的进程,但显然我做了某种替代来让它工作。我怀疑我可以删除那一行,它会起作用,但使用内部where子句是否更有效Sql server SQLServer引用外部查询,sql-server,Sql Server,是否可以在连接上下文中从内部查询引用外部查询?内部查询的“where(sid.ItemID=i.ItemID)”给了我一个错误。我想我以前是这样做的,所以我搜索了我所有存储的进程,但显然我做了某种替代来让它工作。我怀疑我可以删除那一行,它会起作用,但使用内部where子句是否更有效 SELECT departmentName , supplierName , so.SalesOrderID , ss.warehouseInvoiceNo ,
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}您需要在此处使用,而不是左连接
:
OUTER APPLY (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
) AS lastSupplier
在
FROM
或JOIN
子句中引入的子查询不能引用同一FROM
子句中的其他表源(实际上,它们都应该可以同时计算)<代码>应用允许您在评估中引入特定的依赖项。hmmm。。。不知道为什么它的格式是这样的使用而不是LEFT JOIN
,这将允许您访问外部字段。格式化:(或者,您可以突出显示代码块并点击{}
按钮)请注意,您有一个子查询使用top 1,没有order by。当你没有收到订单时,你无法知道你会回到哪一排。谢谢你,达米恩。肖恩:我将编辑并插入行