需求变更!!!行转列数据合并问题!!!
原始表格内容:
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 '第%'