我正在尝试运行查询以选择所有订单,但也会显示第二个表中的客户端/客户名称,以及第三个表中的最后一个发票日期。最初我只是做一个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
但我得到一个错误(两个,但在不同的地方相同的错误)
Msg 102,Level 15,State 1,Line 1 ','附近的语法不正确。
Msg 102,Level 15,State 1,Line 3 ','附近的语法不正确。
我的查询导致它失败的问题是什么?
你的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;