在这个查询(InvoiceID)中,我得到了一个不明确的列名错误。我不知道为什么。它们似乎都正确地连接在一起,那么为什么SSMS不知道显示VendorID呢?
查询:
SELECT
VendorName, InvoiceID, InvoiceSequence, InvoiceLineItemAmount
FROM Vendors
JOIN Invoices ON (Vendors.VendorID = Invoices.VendorID)
JOIN InvoiceLineItems ON (Invoices.InvoiceID = InvoiceLineItems.InvoiceID)
WHERE
Invoices.InvoiceID IN
(SELECT InvoiceSequence
FROM InvoiceLineItems
WHERE InvoiceSequence > 1)
ORDER BY
VendorName, InvoiceID, InvoiceSequence, InvoiceLineItemAmount
发布于 2012-10-01 00:38:37
您在Invoices
表和InvoiceLineItems
表中都有一个列InvoiceID
。查询执行引擎没有办法知道您想要返回哪一个。
添加表别名将有所帮助:
SELECT V.VendorName, I.InvoiceID, IL.InvoiceSequence, IL.InvoiceLineItemAmount
FROM Vendors V
JOIN Invoices I ON (...)
JOIN InvoiceLineItems IL ON (...)
WHERE ...
ORDER BY V.VendorName, I.InvoiceID, IL.InvoiceSequence, IL.InvoiceLineItemAmount
发布于 2012-10-01 00:40:50
因为您连接的是两个都包含InvoiceID的表Invoices和InvoiceLineItems。更改为Invoices.InvoiceID以使其正确。
发布于 2012-10-01 00:39:05
这两个表很可能都有一个同名的列。为每个表取别名,并使用表别名调用每个列。
https://stackoverflow.com/questions/12662954
复制相似问题