SQL Присвойте имя объединенной таблице. Затем, объединяя строки с условием - PullRequest
0 голосов
/ 31 октября 2018

У меня есть две таблицы в SQL Server:

  • Table1 имеет столбцы SEQ, ITEMNO, Location, EXPARRIVAL, OQordered, OQreceived, OQoutstand
  • Table2 имеет столбцы SEQ, PONUMBER

Я соединил две таблицы, сопоставив SEQ:

SELECT 
    a.[SEQ]
    ,a.[ITEMNO]
    ,a.[LOCATION]
    ,a.[EXPARRIVAL]
    ,CONVERT(DATE, CONVERT(VARCHAR(10), a.[EXPARRIVAL])) AS ETA
    ,a.[OQORDERED]
    ,a.[OQRECEIVED]
    ,a.[OQOUTSTAND]
    ,b.[PONUMBER]
FROM 
    [mason01].[dbo].[Table1] a
INNER JOIN
    [mason01].[dbo].[Table2] b ON a.SEQ = b.SEQ

Проблема в том ... Я хочу присвоить результат как c.

( Select * From a inner join b on a.seq=b.seq ) as c

И затем я хочу объединить строки, когда они имеют одинаковые ETA, ITEMNO и Location, при агрегировании OQordered, OQreceived, OQoutstand. Кроме того, PO # должен сочетаться с ','.

Пожалуйста, обратитесь по ссылке ниже:

объединить строки с одинаковой датой

Вот мой запрос, который я пробовал:

SELECT 
    a.[SEQ]
    ,a.[ITEMNO]
    ,a.[LOCATION]
    ,a.[EXPAR
    ,CONVERT(DATE, CONVERT(VARCHAR(10), a.[EXPARRIVAL])) AS ETA
    ,SUM(a.[OQORDERED]) AS orderedQTY
    ,SUM(a.[OQRECEIVED]) AS receivedQTY
    ,SUM(a.[OQOUTSTAND]) AS OutstandingQTY
    ,b.[PONUMBER] = STUFF((SELECT 
                               ',' + c.[PONUMBER], 
                               CONVERT(DATE, CONVERT(VARCHAR(10), c.[EXPARRIVAL])) AS ETA
                           FROM [mason01].[dbo].[Table1] c
                           INNER JOIN [mason01].[dbo].[Table2] d ON c.SEQ = d.SEQ
                           WHERE a.[ETA] = c.[ETA] AND a.[ITEMNO] = c.[ITEMNO]
                           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM 
    [mason01].[dbo].[Table1] a
INNER JOIN 
    [mason01].[dbo].[Table2] b ON a.SEQ = b.SEQ
GROUP BY
    [ETA], [ITEMNO], [LOCATION]

и это приводит к ошибке:

Сообщение 102, Уровень 15, Состояние 1, Строка 9
Неверный синтаксис рядом с '='.

Сообщение 156, Уровень 15, Состояние 1, Строка 13
Неверный синтаксис рядом с ключевым словом «FOR».

Спасибо!

...