我试图运行查询以选择所有订单,但还要显示第二个表中的客户/客户名称,以及第三个表中的最后发票日期。最初,我只是在进行INNER JOIN
来获取发票日期,但是只显示有发票的订单(我也需要包含没有发票的订单,因此我知道应该使用右/左联接) ,但是第二个问题是它多次显示带有多个发票的订单。例如。如果一个订单有3个不同的发票日期,则每个日期都有一行,而不是最后一个发票日期的一行。
我现在正尝试使用此查询来获取正确的数据
WITH inv AS
(
SELECT
CASE moi.orderNumber,
MAX(moi.datePosted) lastInvoiceDate
FROM
tblManOrderInvoices moi
GROUP BY moi.orderNumber
)
SELECT
CASE mo.orderNumber,
c.companyName,
inv.lastInvoiceDate
FROM
tblManOrders mo
LEFT JOIN
tblClients c ON mo.clientId = c.clientId
LEFT JOIN
inv ON mo.orderNumber = inv.orderNumber
WHERE
ISNULL(mo.isDeleted, 0) = 0
ORDER BY
mo.orderNumber
但是我得到一个错误(两个,但是在不同的地方有相同的错误)
第15级状态1行1的消息102
','附近的语法不正确。第15级状态1行3的消息102
','附近的语法不正确。
导致查询失败的查询出了什么问题?
答案 0 :(得分:2)
您的CASE
是不必要的,:
WITH inv AS (
SELECT moi.orderNumber, MAX(moi.datePosted) as lastInvoiceDate
FROM tblManOrderInvoices moi
GROUP BY moi.orderNumber
)
SELECT mo.orderNumber, c.companyName, inv.lastInvoiceDate
FROM tblManOrders mo LEFT JOIN
tblClients c
ON mo.clientId = c.clientId LEFT JOIN
inv
ON mo.orderNumber = inv.orderNumber
WHERE mo.isDeleted IS NOT NULL
ORDER BY mo.orderNumber;