sql - 用于数据更新的 SQL 查询
问题描述
我需要一个查询来更新两个表中的一些数据
我的表格数据格式如下
PAN email
---------------------------------------------------
ABC1234567 email1
ABC1234567 email2
ABD2345678 email3
我想像这样转换它:
PAN E1 E2 E3 E4 E5
---------------------------------------------------
ABC1234567 email1 email2
ABD2345678 email3
我怎样才能做到这一点?
解决方案
试试这个查询。这将为一个PAN号码提供最多 5 个电子邮件 ID。
SELECT D.PAN
,MAX(CASE WHEN RN=1 THEN D.EmailId ELSE '' END)E1
,MAX(CASE WHEN RN=2 THEN D.EmailId ELSE '' END)E2
,MAX(CASE WHEN RN=3 THEN D.EmailId ELSE '' END)E3
,MAX(CASE WHEN RN=4 THEN D.EmailId ELSE '' END)E4
,MAX(CASE WHEN RN=5 THEN D.EmailId ELSE '' END)E5
FROM(
SELECT PAN,
EmailId,
ROW_NUMBER() OVER(PARTITION BY PAN ORDER BY PAN) RN
FROM YourTable
)D
GROUP BY PAN
推荐阅读
- react-native - 更改 FlatList 的唯一 onPressed 项的样式
- c# - RabbitMQ.Fakes 单元测试 C#,System.TypeLoadException
- scala - [RollOverStatus] = 'Y' then 'Yes' Else 'No' end as RollOverStatus 如何在 spark-scala 2.4.0 中编写
- asp.net - 当用户在请求期间强制退出浏览器时,w3wp 的 CPU 使用率突然升高
- javascript - 什么语法错误导致函数的“文本”在这个 JS 闭包中返回,而不是让它递增?
- java - 我们如何从另一个不包含该片段的类中调用一个片段?
- jquery-ui - jQueryUI selectmenu - 设置选择的选项
- python-3.x - NetworkX 中的标签
- java - 如何加入两个KTable并将结果ktable写入状态存储
- python - 从dict中提取变量并保存到csv