sql – 使用两列数据转换
发布时间:2020-12-12 16:38:35 所属栏目:MsSql教程 来源:网络整理
导读:我有数据转换格式.看起来像这样: -----------------------------------------| user_id | org | position | lang |-----------------------------------------| 1001 | USE | Boss | EN || 1001 | USD | Bossa | FI || 1002 | GWR | Dim | SV || 1003 | GGA
我有数据转换格式.看起来像这样:
----------------------------------------- | user_id | org | position | lang | ----------------------------------------- | 1001 | USE | Boss | EN | | 1001 | USD | Bossa | FI | | 1002 | GWR | Dim | SV | | 1003 | GGA | DCS | FI | | 1003 | GCA | DDD | SV | ----------------------------------------- 我想将数据表示为: ------------------------------------------------------------------------------------- | user_id | org_fi | position_fi | org_en | position_en | org_sv | position_sv | ------------------------------------------------------------------------------------- | 1001 | USD | Bossa | USE | Boss | | | | 1002 | | | | | GWR | Dim | | 1003 | GGA | DCS | | | GCA | DDD | ------------------------------------------------------------------------------------- 我认为需要通过命令连接的数据库查询. 这是我试图做的: SELECT user_id,org,position,lang,ROW_NUMBER () OVER (PARTITION BY lang,user_id ORDER BY ROWID) rn FROM source 但是,我不知道如何前进. 解决方法这是一种获取所需格式的数据的方法:SELECT user_id,max(case when lang = 'FI' THEN org ELSE ' ' END) org_fi,max(case when lang = 'FI' THEN position ELSE ' ' END) position_fi,max(case when lang = 'EN' THEN org ELSE ' ' END) org_en,max(case when lang = 'EN' THEN position ELSE ' ' END) position_en,max(case when lang = 'SV' THEN org ELSE ' ' END) org_sv,max(case when lang = 'SV' THEN position ELSE ' ' END) position_sv FROM source group by user_id order by user_id 见SQL Fiddle with Demo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |