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
展开
 我来答
hy1397471
2015-12-16 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17154
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

向TA提问 私信TA
展开全部

使用union连接SQL语句,可以实现常见的SQL行转列运用。

以图中表格为例:


转为列的结果,如图:


需要注意,如果有需要显示重复记录,把union 改成 union all

flyingFish211
2011-04-20 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
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.规格
更多追问追答
追问
如果将结果"编号, 规格"进行分组统计,那应该怎么写呢?
参:
http://zhidao.baidu.com/question/255442104.html?fr=middle_ask#replyask-4918791
追答
什么数据库?SQL SERVER 2005以上/ db2/ oracle/mysql都好办。

回答你那边了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式