【发布时间】:2019-02-19 17:03:46
【问题描述】:
我正在尝试运行查询以选择所有订单,但还显示第二个表中的客户/客户名称,以及第三个表中的最后发票日期。最初我只是做一个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
但我得到一个错误(两个,但在不同的地方同样的错误)
消息 102,第 15 级,状态 1,第 1 行
',' 附近的语法不正确。消息 102,第 15 级,状态 1,第 3 行
',' 附近的语法不正确。
我的查询有什么问题导致它失败?
【问题讨论】:
-
CASE moi.orderNumber, MAX(moi.datePosted)? yoruCASE表达式的其余部分在哪里?
标签: sql-server join syntax