SQL 将横向数据转为纵向记录
如下表编号规格A数量A规格B数量B规格C数量C00128*1415026*18.5124200226.5*21145828.5*2175628*18.5666转换为:编号...
如下表
编号 规格A 数量A 规格B 数量B 规格C 数量C
001 28*14 150 26*18.5 1242
002 26.5*21 1458 28.5*21 756 28*18.5 666
转换为:
编号 规格 数量
001 28*14 150
001 26*18.5 1242
002 26.5*21 1458
002 28.5*21 756
002 28*18.5 666
那还有个表 如下, 如何把他们链起来呢?
编号 规格 名称
001 28*14 aaa
001 26*18.5 aaa
002 26.5*21 bbb
002 28.5*21 bbb
002 28*18.5 bbb 展开
编号 规格A 数量A 规格B 数量B 规格C 数量C
001 28*14 150 26*18.5 1242
002 26.5*21 1458 28.5*21 756 28*18.5 666
转换为:
编号 规格 数量
001 28*14 150
001 26*18.5 1242
002 26.5*21 1458
002 28.5*21 756
002 28*18.5 666
那还有个表 如下, 如何把他们链起来呢?
编号 规格 名称
001 28*14 aaa
001 26*18.5 aaa
002 26.5*21 bbb
002 28.5*21 bbb
002 28*18.5 bbb 展开
2个回答
展开全部
SELECT t1.编号, t1.规格, t2.名称
FROM (SELECT 编号, 规格A AS 规格, 数量A FROM tab
UNION ALL
SELECT 编号, 规格B AS 规格, 数量B FROM tab
UNION ALL
SELECT 编号, 规格C AS 规格, 数量C FROM tab) t1
INNER JOIN t2
ON t1.编号 = t2.编号 AND t1.规格 = t2.规格
FROM (SELECT 编号, 规格A AS 规格, 数量A FROM tab
UNION ALL
SELECT 编号, 规格B AS 规格, 数量B FROM tab
UNION ALL
SELECT 编号, 规格C AS 规格, 数量C FROM tab) t1
INNER JOIN t2
ON t1.编号 = t2.编号 AND t1.规格 = t2.规格
更多追问追答
追问
如果将结果"编号, 规格"进行分组统计,那应该怎么写呢?
参:
http://zhidao.baidu.com/question/255442104.html?fr=middle_ask#replyask-4918791
追答
什么数据库?SQL SERVER 2005以上/ db2/ oracle/mysql都好办。
回答你那边了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询