enter image description here我在Oracle DB中有一个表,其中包含输入格式的数据(如随附的图像所示)。
需要将其转换为输出格式(如随附的图片所示)
为清楚起见,如果在XX列,YY列或ZZ列中的值为“ 1”,则该ID必须显示为“角色”(多个唯一行-请参见示例A123)。 另外,如果一个ID有多个“代码”值,则这些值需要显示为“代码:”,并用逗号分隔,如C123 ID所示。
您能帮我写一个查询来获取所需的输出吗?
附加了输入输出图像(Input_Output.png),因为数据在问题中的格式可能不正确。
谢谢。
答案 0 :(得分:0)
我试图在下面编写此查询,但是没有任何平台可以验证结果:),因为我现在正在训练中。您可以尝试以下查询:
SELECT ID, Name, 'XX' Role FROM yourtable WHERE XX =1 -- To exclude no XX role
union
SELECT ID, Name, 'YY' Role FROM
yourtable WHERE YY =1 -- To exclude no YY role
union
SELECT ID, Name, 'ZZ' Role FROM yourtable WHERE ZZ =1 -- To exclude no ZZ role
union
SELECT ID, Name, 'Codes: ' || LISTAGG(code, ', ') WITHIN GROUP (ORDER BY code) "Role" FROM yourtable group by ID, Name;
希望此csn帮助您。
答案 1 :(得分:0)
最终查询以供参考:
SELECT ID,NAME,'XX'在TABLENAME中的角色,其中XX = 1
工会
SELECT ID,NAME,'YY'在TABLENAME中的角色,其中YY = 1
工会
SELECT ID,NAME,'ZZ'在TABLENAME中的角色,其中ZZ = 1
联盟
选择ID,NAME,Role ='Codes:',STUFF((选择不同的','+代码来自TABLENAME T1 WHERE T1.ID = T2.ID
for XML path('')),1,1,''),TABLENAME T2中的角色