加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 将行转换为列

发布时间:2020-12-24 22:18:16 所属栏目: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
> Oracle 11g

MySQL不支持PIVOT,也不支持SQLite.我不知道PostgreSQL或DB2何时/如果……

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读