首页 > 解决方案 > 用于数据更新的 SQL 查询

问题描述

我需要一个查询来更新两个表中的一些数据

我的表格数据格式如下

PAN         email
---------------------------------------------------
ABC1234567  email1
ABC1234567  email2
ABD2345678  email3

我想像这样转换它:

PAN         E1      E2      E3      E4      E5
---------------------------------------------------
ABC1234567  email1  email2  
ABD2345678  email3

我怎样才能做到这一点?

标签: sqlsql-server

解决方案


试试这个查询。这将为一个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

推荐阅读