我有向客户发出的呼叫的数据,需要将其转置(或至少将其正确分组),以便从这种格式转换为下一种格式:

具备以下条件:

ID Dept Call_no
1 A 1
1 B 2
2 C 1
3 B 1
3 B 2

想要:

ID Dept_1 Dept_2
1 A B
2 C
3 B B

呼叫号始终是1或2.ID的数量不确定(以千为单位,每天都在变化),因此它需要是动态的.

我一直在寻找PIVOT美元,但我不确定它是否真的能满足我的需求.我记得我在企业指南中使用GROUP BY个函数做了类似的事情,但我想不出我是如何做到的.

谢谢你的洞察力.

推荐答案

你可以按如下方式处理这个问题.

如果在Call_No不适用的情况下接受Null,则可以删除IsNull.

聚合可以使用min或max,这并不重要,也可以 Select 非空值.

select Id, 
    IsNull(min(case when Call_No = 1 then Dept end), '') Dept_1,
    IsNull(min(case when Call_No = 2 then Dept end), '') Dept_2
from t
group by Id;

Sql相关问答推荐

如何查询一个名称是根据PL/pgSQL函数结果构建的表?

从2个表中查找每条记录的唯一最接近的日期匹配

如何在SQL Server中列出从当前月份开始的过go 10年中的月份

如何优化我的功能以减少花费的时间?

删除事务中的本地临时表

如何在PostgreSQL中的一列中添加两个文本?

重用传递给 node 的参数-postgres upsert查询

Select 列组(按同一表格中的另一列分组)Laravel 10

Haystack针相交-在元素最多的Haystack中查找集合

Athena 计算从日期到当前时间戳的每月计数

除了风格之外,还有什么理由更喜欢简单的CASE WHEN而不是搜索呢?

如何在TSQL中编写此窗口查询

如何根据共同列值从两个表中包含列,但只包含左表中的行

基于字符串的SQL查询

COBOL\DB2作业(job)需要帮助?快来获取专业指导!

为 sqlite 全文搜索 (fts) 创建触发器时出现虚拟表的不安全使用

计算 SQL 中的总体成功率:递归 CTE 还是替代方法?

并非所有变量都绑定在 PL SQL 函数中

使用 JSON_BUILD_OBJ 从 Postgres 返回 JSON

聚合 Athena 中的列