SQL 服务器正在使用 STUFF 和 GROUP BY 将数据复制到另一个 table
SQL Server copying data to another table using STUFF and GROUP BY
我正在尝试将记录从一个 table 插入到另一个(SQL 服务器),按相同字段分组并将源中不同字段的内容连接到单个字段中在目标 table.
STUFF 函数已在 SSMS 中测试,但我似乎无法将其集成到我的 INSERT/SELECT 语句中,我认为问题可能归结为我对 GROUP BY 和 MAX 的使用?
INSERT INTO [ProductsImported]
(image_url, product_id, item_size)
SELECT
image_url,
MAX(product_id),
STUFF((SELECT ',' + item_size AS [text()]
FROM (SELECT DISTINCT image_url FROM [ProductsTemp]) x
FOR XML PATH ('')),1,1,'')
FROM [ProductsTemp]
WHERE retailer_name = 'Retailer Name'
GROUP BY image_url
我对语句进行了一些缩减以删除其他字段并使其更易于阅读,它们都像 MAX(product_id).
一样被选中
我得到的错误是:
[SQL Server]Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
我是不是太雄心勃勃了,试图在一个查询中做一些不可能的事情?
为 max(product_id) 取别名
INSERT INTO [ProductsImported]
(image_url, product_id, item_size)
SELECT
image_url,
MAX(product_id) As product_id,
STUFF((SELECT ',' + item_size AS [text()]
FROM (SELECT DISTINCT image_url FROM [ProductsTemp]) x
FOR XML PATH ('')),1,1,'') As item_size
FROM [ProductsTemp]
WHERE retailer_name = 'Retailer Name'
GROUP BY image_url,product_id,item_size
我正在尝试将记录从一个 table 插入到另一个(SQL 服务器),按相同字段分组并将源中不同字段的内容连接到单个字段中在目标 table.
STUFF 函数已在 SSMS 中测试,但我似乎无法将其集成到我的 INSERT/SELECT 语句中,我认为问题可能归结为我对 GROUP BY 和 MAX 的使用?
INSERT INTO [ProductsImported]
(image_url, product_id, item_size)
SELECT
image_url,
MAX(product_id),
STUFF((SELECT ',' + item_size AS [text()]
FROM (SELECT DISTINCT image_url FROM [ProductsTemp]) x
FOR XML PATH ('')),1,1,'')
FROM [ProductsTemp]
WHERE retailer_name = 'Retailer Name'
GROUP BY image_url
我对语句进行了一些缩减以删除其他字段并使其更易于阅读,它们都像 MAX(product_id).
一样被选中我得到的错误是:
[SQL Server]Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
我是不是太雄心勃勃了,试图在一个查询中做一些不可能的事情?
为 max(product_id) 取别名
INSERT INTO [ProductsImported]
(image_url, product_id, item_size)
SELECT
image_url,
MAX(product_id) As product_id,
STUFF((SELECT ',' + item_size AS [text()]
FROM (SELECT DISTINCT image_url FROM [ProductsTemp]) x
FOR XML PATH ('')),1,1,'') As item_size
FROM [ProductsTemp]
WHERE retailer_name = 'Retailer Name'
GROUP BY image_url,product_id,item_size