SQL Server с x AS неверный синтаксис - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь выполнить запрос, чтобы выбрать все заказы, но также отображать имя клиента / клиента из второй таблицы плюс дату последнего счета-фактуры из третьей таблицы.Первоначально я просто делал 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
Неверный синтаксис рядом с ','.

Что не так с моим запросом, который вызывает егопотерпеть неудачу?

1 Ответ

0 голосов
/ 19 февраля 2019

Ваш 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...