【问题标题】:SQL Server copying data to another table using STUFF and GROUP BYSQL Server 使用 STUFF 和 GROUP BY 将数据复制到另一个表
【发布时间】:2015-03-18 14:26:31
【问题描述】:

我正在尝试将记录从一个表插入到另一个表 (SQL Server),按相同字段分组,并将源中不同字段的内容连接到目标表中的单个字段中。

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]无法对包含聚合或子查询的表达式执行聚合函数。

我是否过于雄心勃勃并试图在单个查询中完成一些不可能的事情?

【问题讨论】:

    标签: sql-server group-by


    【解决方案1】:

    为 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 
    

    【讨论】:

    • 谢谢!这让我更进一步,我现在从 stuff 函数中得到了很长的结果,但我希望能够从这里弄清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多