SQL语句分类的问题,求解

来源:百度知道 编辑:UC知道 时间:2024/09/22 01:01:57
有表1,内容为:
主键名1 主键名2 类型 数量
ABC ZZZ P 10
ABC YYY O 20
ABC XXX I 30
DEF ZZZ P 100
DEF ZZZ O 200
DEF YYY I 300
DEF XXX U 400
DEF WWW I 500

另有表2,具体格式如下:
主键名1 主键名2 类型_P 类型_O 类型_I 类型_U 数量

现想把表1中所有内容分类插入表2中,效果如下:
主键名1 主键名2 类型_P数量 类型_O数量 类型_I数量 类型_U数量
ABC ZZZ 10 0 0 0
ABC YYY 0 20 0 0
ABC XXX 0 0 30 0
DEF ZZZ 100 200 0 0
DEF YYY 0 0 300 0
DEF XXX 0 0 0 400
DEF WWW 0 0 500 0

才疏学浅,SQL语句不熟不知道怎么做,请大家帮助!
表2的格式搞错了,具体应为:
主键名1 主键名2 类型_P 类型_O 类型_I 类型_U
几个类型:P、O、I、U已知,所以不需要通过命令自动按照不

这是一个行列转置的问题, 如果类型都是已知的可以用case when 来转置,
如果类型未知,则一般需要用动态语句来做
CASE WHEN:
select 主键1,主键2,
case when 类型='I' then 数量 else 0 end 类型_I,
case when 类型='U' then 数量 else 0 end 类型_U,
......
from 表1

动态语句,你网上查一下,大概是定义一个8000个字符的char类型,但是如果你的类型太多可能会超过8000个字符,SQL最大就是8000,用select 拼接成上面的case when ,然后用exec调用