我的一个表中有如下数据
ID SOURCE TARGET TEL1 TELE1 TELE2
---------------------------------------------------------------------------------
1 TEL TEL1 5RBTTX4016/8
1 TEL TEL1 5RBTTX4018
1 TEL TEL1 5RBTTX4016我希望数据分布在空白的列中。我希望期望的输出如下所示。
ID SOURCE TARGET TEL1 TELE1 TELE2
--------------------------------------------------------------------------------------------------
1 TEL TEL1 5RBTTX4016/8
1 TEL TELE1 5RBTTX4018
1 TEL TELE2 5RBTTX4016或
将其保存在如下所示的单个文件中也是可以的:
ID SOURCE TARGET TEL1 TELE1 TELE2
----------------------------------------------------------------------------------------------------------------
1 TEL TEL1,TELE1,TELE2 5RBTTX4016/8 5RBTTX4016 5RBTTX4018IMP -Please注意到,由于数据将被移动到不同的列,因此列名将被捕获在“目标”列中。我有大约100个这样的身份证。ID =1只是一个例子。
我试过了:
SELECT id,COALESCE(NULLIF(TEL1,''), TELE3)
FROM table_name 我如何才能做到这一点?
发布于 2018-03-09 18:53:17
如果在数据目标中是行号
ID SOURCE TARGET TEL1 TELE1 TELE2
---------------------------------------------------------------------------------
1 TEL TEL1 5RBTTX4016/8
1 TEL TELE1 5RBTTX4018
1 TEL TELE2 5RBTTX4016然后,您可以使用以下查询:
SELECT
ID,[SOURCE],STRING_AGG([TARGET], ', ') AS [TARGET],
MAX(CASE WHEN [TARGET] = 'TEL1' THEN [TEL1] ELSE NULL END) AS TEL1,
MAX(CASE WHEN [TARGET] = 'TELE1' THEN [TEL1] ELSE NULL END) AS TELE1,
MAX(CASE WHEN [TARGET] = 'TELE2' THEN [TEL1] ELSE NULL END) AS TELE2
FROM
Mytable
GROUP BY
ID,[SOURCE]https://stackoverflow.com/questions/49108258
复制相似问题