【问题标题】:SQL Query for data update用于数据更新的 SQL 查询
【发布时间】:2020-03-24 17:48:48
【问题描述】:

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

我的表格数据格式如下

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

我想这样转换:

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

我该怎么做?

【问题讨论】:

  • 请参考这个How to Ask
  • 没有足够的样本数据来产生预期的输出。是否有任何其他列值指示 PAN 和电子邮件 1 到 5 中的值?
  • 无指示。有 2200000 条记录,对于 1 个 pan 没有需要在列中转换的多封电子邮件
  • @shwetapipaliya,你能说一下,一个 PAN 号码的最大邮件数是多少?

标签: sql sql-server


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    相关资源
    最近更新 更多