У меня есть две таблицы в 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».
Спасибо!