首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

需求变更!行转列数据合并有关问题!

2013-09-05 
需求变更!!!行转列数据合并问题!!!原始表格内容:XBBHZBDJBHONETWOGUANCI 172753HNT00010163616255配比 172

需求变更!!!行转列数据合并问题!!!
原始表格内容:   
XBBH       ZBDJBH               ONE     TWO     GUANCI
 172753     HNT00010163      616      255        配比
 172754     HNT00010163      643      278        第1罐
 172755     HNT00010163      616      255        配比
 172756     HNT00010163      604      292        第2罐
 172757      HNT00010163      1247      570        累计值
 172758     HNT00010163      1.22      11.76        总误差%

现需要表格内容: 
  ZBDJBH           GUANCI   ONE配比 ONE称重  ONE总误差%   TWO配比 TWO称重  TWO总误差%  
 HNT00010163       第1罐       616      643          4.38                  255            278            9.02
 HNT00010163       第2罐       616      604          -1.95                  255            292            14.5                       

说明:  
     在原始表中,有多个列,从one到ten,举例只写出了两个列的内容。每一个ZBDJBH可能有多个罐次,现在需要将每个罐次的内容提取出来,

也就是有几个罐次,ZBDJBH编号就整理成几行显示,这个如何做呢?望大侠们指点指点!
     在此谢啦!
  行转列???数据合并
[解决办法]


create table #tb(XBBH int,ZBDJBH varchar(20),
    ONE numeric(12,2),TWO numeric(12,2),GUANCI varchar(10))
insert into #tb
select 172753,'HNT00010163',616,255,'配比'
union all select 172754,'HNT00010163',643,278,'第1罐'
union all select 172755,'HNT00010163',616,255,'配比'
union all select 172756,'HNT00010163',604,292,'第2罐'
union all select 172757,'HNT00010163',1247,570,'累计值'
union all select 172758,'HNT00010163',1.22,11.76,'总误差%'


SELECT a.ZBDJBH,a.GUANCI
,b.ONE ONE配比,a.ONE ONE称重,CAST(100.*(a.ONE-b.ONE)/b.ONE AS decimal(10,2)) [ONE总误差%]
,b.TWO TWO配比,a.TWO TWO称重,CAST(100.*(a.TWO-b.TWO)/b.TWO AS decimal(10,2)) [TWO总误差%]
FROM #tb a
CROSS APPLY 
(
SELECT TOP 1 * FROM #tb WHERE XBBH<a.XBBH ORDER BY XBBH desc
) b
WHERE a.GUANCI LIKE '第%'

热点排行