【问题标题】:How to write a query to parse data into multiple columns from one column如何编写查询以将数据从一列解析为多列
【发布时间】:2021-06-14 08:57:03
【问题描述】:

我有一个现有的表(链接 #1),我正在尝试为其编写查询,以便查询重新格式化数据,如第二个链接中所示。基本上,它是一个表格,列出了一组用户的完整电子邮件类型。 “已完成类型”是具有多个值的单列。我正在尝试将“已完成类型”中的单个值(其中 3 个)解析到它们自己的列中并计算总数。我还想添加一个名为“已完成”的单独列,它只是该特定用户在该特定月份的“关闭而没有响应”和“已回复”的总和。

然后我计划在 Excel 中创建一个数据透视表,该数据透视表将使用重新格式化的数据读取新查询。对于我的生活,我无法弄清楚如何用 SQL 编写它。我尝试创建单独的查询来汇总不同的“已完成”类型,然后尝试合并它们,但它不起作用。

Existing table

Future Query Output

非常感谢您在 Access 中编写 SQL 查询以生成图像 #2 时提供的任何建议或指导!提前谢谢!

【问题讨论】:

    标签: sql ms-access parsing join union


    【解决方案1】:

    使用交叉表查询:

    TRANSFORM 
        Sum([Case Count]) AS [SumOfCase Count]
    SELECT 
        [Month], 
        ID, 
        [Adjusted Name], 
        Mgr, 
        Sup, 
        Region, 
        Region2, 
        Sum(Abs([Completed Type] Not Like "Closed*")) AS Completed
    FROM 
        Cases
    GROUP BY 
        [Month], 
        ID, 
        [Adjusted Name], 
        Mgr, 
        Sup, 
        Region, 
        Region2
    ORDER BY 
        ID, 
        [Month] DESC 
    PIVOT 
        [Completed Type] In ("Replied","Sent","Closed without response");
    

    输出:

    【讨论】:

      【解决方案2】:

      可以用case when和sum,例如:

      select month,
         id,
         sum(case when completed_type = "completed" then 1 else 0 end) as completed
      from table
      group by month, id
      

      【讨论】:

        猜你喜欢
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 2021-08-30
        • 1970-01-01
        相关资源
        最近更新 更多