[英]How to convert the result of a sql query to a csv format
我的问题很简单,但我坚持了 2 周,无法退后一步查看可能的解决方案。
我的 sql 查询结果如下所示:
USR Count DATE
u1 9 160920
U1 2 160918
U1 5 160922
U2 19 160924
U3 2 160919
U3 1 160921
U4 12 160921
由于工作服务器的限制,我想将此结果转换为 csv 格式,使其看起来像使用 BASH:
;160918;160919;160920;160921;160922;160923;160924
U1; 2; 0; 9; 0; 5; 0; 0
U2; 0; 0; 0; 0; 0; 0; 19
U3; 0; 2; 0; 1; 0; 0; 0
U4; 0; 0; 0; 12; 0; 0; 0
我被卡住了,我成功地将该行转换为 csv 格式,但是当我尝试将重复的用户重新组合在一行中时,我失败了。
你有什么建议或想法吗?
SELECT Z.Col1 AS " ",
MAX( CASE WHEN Z.Col3 = 160918 THEN Z.Col2 ELSE 0 END ) "160918",
MAX( CASE WHEN Z.Col3 = 160919 THEN Z.Col2 ELSE 0 END ) "160919",
MAX( CASE WHEN Z.Col3 = 160920 THEN Z.Col2 ELSE 0 END ) "160920",
MAX( CASE WHEN Z.Col3 = 160921 THEN Z.Col2 ELSE 0 END ) "160921",
MAX( CASE WHEN Z.Col3 = 160922 THEN Z.Col2 ELSE 0 END ) "160922",
MAX( CASE WHEN Z.Col3 = 160923 THEN Z.Col2 ELSE 0 END ) "160923",
MAX( CASE WHEN Z.Col3 = 160924 THEN Z.Col2 ELSE 0 END ) "160924"
FROM
(
SELECT *
FROM
( SELECT 'u1' AS Col1, 9 AS Col2, 160920 AS Col3) UNION ALL
( SELECT 'u1' AS Col1, 2 AS Col2, 160918 AS Col3) UNION ALL
( SELECT 'u2' AS Col1, 19 AS Col2, 160924 AS Col3) UNION ALL
( SELECT 'u3' AS Col1, 2 AS Col2, 160919 AS Col3) UNION ALL
( SELECT 'u4' AS Col1, 1 AS Col2, 160921 AS Col3) UNION ALL
( SELECT 'u4' AS Col1, 12 AS Col2, 160921 AS Col3)
) Z
GROUP BY Z.Col1
ORDER BY Z.Col1
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.