sql – 将行转换为列
发布时间:2020-12-24 22:34:41 所属栏目:MsSql教程 来源:网络整理
导读:我怎么能转换这个表: – INV DESCRIPTION AMOUNT--------------------------1001 CHARGES 1001001 FREIGHT 301001 INSURANCE 201002 CHARGES 2151002 FREIGHT 321002 INSURANCE 25 使用SQL格式: – INV CHARGES FREIGHT INSURANCE-------------------------
我怎么能转换这个表: – INV DESCRIPTION AMOUNT -------------------------- 1001 CHARGES 100 1001 FREIGHT 30 1001 INSURANCE 20 1002 CHARGES 215 1002 FREIGHT 32 1002 INSURANCE 25 使用SQL格式: – INV CHARGES FREIGHT INSURANCE --------------------------------- 1001 100 30 20 1002 215 32 25 解决方法使用:SELECT t.inv,MAX(CASE WHEN t.description = 'CHARGES' THEN t.amount ELSE NULL END) AS charges,MAX(CASE WHEN t.description = 'FREIGHT' THEN t.amount ELSE NULL END) AS freight,MAX(CASE WHEN t.description = 'INSURANCE' THEN t.amount ELSE NULL END) AS insurance FROM YOUR_TABLE t GROUP BY t.inv ORDER BY t.inv 为了支持动态的描述列表,您必须指定它所针对的数据库,因为每个数据库的动态SQL语法都不同. PIVOT / UNPIVOT是ANSI语法,但支持有限: > SQL Server 2005 MySQL不支持PIVOT,也不支持SQLite.我不知道PostgreSQL或DB2何时/如果…… (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |