【问题标题】: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