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

痛苦,一个困扰已久的有关问题,望指点,不胜感激!

2012-01-24 
痛苦,一个困扰已久的问题,望大虾指点,不胜感激!!!销售出库分录:分录号箱号物料名称规格型号批号单位数量箱

痛苦,一个困扰已久的问题,望大虾指点,不胜感激!!!
销售出库分录:
分录号       箱号     物料名称     规格型号     批号     单位       数量       箱数
    1                 1               A                   T1           001         KG         100           1
    2                 2               A                   T1           001         KG         80             1
    3                 3               A                   T1           001         KG         95             1
    4                 4               A                   T1           001         KG         110           1
    5                 5               A                   T1           001         KG         100           1
    6                 6               A                   T1           001         KG         80             1
    7                 7               A                   T1           001         KG         80             1
    8                 8               A                   T1           001         KG         100           1
    9                 1               B                   T2           002         KG         100           1
  10                 2               B                   T2           002         KG         90             1
  11                 3               B                   T2           002         KG         85             1


  12                 4               B                   T2           002         KG         100           1
  13                 5               B                   T2           002         KG         100           1
  14                 6               B                   T2           002         KG         80             1
  15                 7               B                   T2           002         KG         90             1
  16                 1               C                   T3           003         KG         100           1
  17                 2               C                   T3           003         KG         100           1
  18                 3               C                   T3           003         KG         90             1
  19                 4               C                   T3           003         KG         120           1
  20                 5               C                   T3           003         KG         100           1
  21                 6               C                   T3           003         KG         100           1

现要实现如下效果:

物料名称:   A       规格型号:   T1       批号:   001       单位:   KG  
箱号         数量       箱号           数量       箱号       数量       箱号     数量
  1             100           2               80             3             95           4         110


  5             100           6               80             7             80           8         100
物料名称:   B       规格型号:   T2       批号:   002       单位:   KG
箱号         数量       箱号           数量       箱号       数量       箱号     数量
  1             100           2               90             3             85           4         100
  5             100           6               80             7             90        
物料名称:   C       规格型号:   T3       批号:   003       单位:   KG
箱号         数量       箱号           数量       箱号       数量       箱号     数量
  1             100           2               100             3           90           4         100
  5             100           6               100      




[解决办法]
create table 出库表(分录号 int identity(1,1), 箱号 int, 物料名称 varchar(10),
规格型号 varchar(10), 批号 varchar(10), 单位 varchar(10), 数量 int, 箱数 int)
insert 出库表 select 1, 'A ', 'T1 ', '001 ', 'KG ',100,1
insert 出库表 select 2, 'A ', 'T1 ', '001 ', 'KG ',80,1
insert 出库表 select 3, 'A ', 'T1 ', '001 ', 'KG ',95,1
insert 出库表 select 4, 'A ', 'T1 ', '001 ', 'KG ',110,1
insert 出库表 select 5, 'A ', 'T1 ', '001 ', 'KG ',100,1
insert 出库表 select 6, 'A ', 'T1 ', '001 ', 'KG ',80,1
insert 出库表 select 7, 'A ', 'T1 ', '001 ', 'KG ',80,1
insert 出库表 select 8, 'A ', 'T1 ', '001 ', 'KG ',100,1
insert 出库表 select 1, 'B ', 'T2 ', '002 ', 'KG ',100,1
insert 出库表 select 2, 'B ', 'T2 ', '002 ', 'KG ',90,1
insert 出库表 select 3, 'B ', 'T2 ', '002 ', 'KG ',85,1
insert 出库表 select 4, 'B ', 'T2 ', '002 ', 'KG ',100,1
insert 出库表 select 5, 'B ', 'T2 ', '002 ', 'KG ',100,1
insert 出库表 select 6, 'B ', 'T2 ', '002 ', 'KG ',100,1
go

select
物料名称, 规格型号, 批号, 单位,
cast(max(case when 箱号%4=1 then 箱号 else ' ' end) as varchar(10)) as [箱号(1)],
cast(max(case when 箱号%4=1 then 数量 else ' ' end) as varchar(10)) as [数量(1)],
cast(max(case when 箱号%4=2 then 箱号 else ' ' end) as varchar(10)) as [箱号(2)],


cast(max(case when 箱号%4=2 then 数量 else ' ' end) as varchar(10)) as [数量(2)],
cast(max(case when 箱号%4=3 then 箱号 else ' ' end) as varchar(10)) as [箱号(3)],
cast(max(case when 箱号%4=3 then 数量 else ' ' end) as varchar(10)) as [数量(3)],
cast(max(case when 箱号%4=0 then 箱号 else ' ' end) as varchar(10)) as [箱号(4)],
cast(max(case when 箱号%4=0 then 数量 else ' ' end) as varchar(10)) as [数量(4)]
from
出库表
group by
物料名称, 规格型号, 批号, 单位,(箱号-1)/4+1

drop table 出库表

/*
物料名称规格型号批号单位箱号(1)数量(1)箱号(2)数量(2)箱号(3)数量(3)箱号(4)数量(4)
-----------------------------------------------------
AT1001KG11002803954110
AT1001KG51006807808100
BT2002KG11002903854100
BT2002KG510061000000
*/
[解决办法]
LZ要直接要在SQL里实现这个结果?
查看表格还是Print出来啊?

结果集为 8 列 N 行,使用二重游标可以实现施主所需要的结果。

物料名称: A 规格型号: T1 批号: 001 单位: KG
箱号 数量 箱号 数量 箱号 数量 箱号 数量
1 100 2 80 3 95 4 110
5 100 6 80 7 80 8 100



[解决办法]
还是用数据库与报表工具一起实现吧

热点排行