给出以下表1
id category city value
100 A x 10
100 A y 20
100 B x 1000
101 A x 100
101 C x 2
102 B x 3
我们希望将category_city的值转换为列,即
id A_x A_y B_x B_y C_x
100 10 20 1000 NULL NULL
101 100 NULL NULL NULL 2
102 NULL NULL 3 NULL NULL
提到的{max(case when when)方法in this thread效果不佳。比方说,即使我们只有100个不同的类别值和10个不同的城市值,category_city的组合也将是1000.我们需要手动编写1000行“case(when ...)as class_city”。这太丑了。
SELECT t.userid
MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username,
MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password,
MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email
FROM TABLE t
GROUP BY t.userid
有什么好方法吗?