您的位置:程序门 -> ms-sql server -> 应用实例



求助sql语句,财务需要的报表


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求助sql语句,财务需要的报表
发表于:2007-08-17 14:28:46 楼主
生产表

字段如下

型号       总数           良品数       不良品数       过程

aaa       1030         1000             20             在线物料

aaa       1060         1000             40             产出物料

aaa       2000         1990             10             产出物料

bbb       1090         1000             50             在线物料

bbb       1100         1000             100           产出物料

 

要得到的表    

 

 

                    产出物料                                 在线物料

型号         总数           良品       不良品     损耗           良品       不良品     损耗

 

aaa         4090           2990         50           30           1000         20           15

bbb         2190           2000       100           0             1000         50           40
发表于:2007-08-17 14:41:021楼 得分:0
损耗怎么算的?
发表于:2007-08-17 14:47:572楼 得分:0
create   table   tb(型号   varchar(10),总数   int,良品数   int,不良品数   int,过程   varchar(10))

insert   into   tb   values( 'aaa ',       1030,         1000   ,           20     ,         '在线物料 ')
insert   into   tb   values( 'aaa ',       1060,         1000   ,           40     ,         '产出物料 ')
insert   into   tb   values( 'aaa ',       2000,         1990   ,           10     ,         '产出物料 ')
insert   into   tb   values( 'bbb ',       1090,         1000   ,           50     ,         '在线物料 ')
insert   into   tb   values( 'bbb ',       1100,         1000   ,           100   ,         '产出物料 ')

select   型号,
    sum(总数)   总数,
    sum(case   when   过程   =   '产出物料 '   then   良品数   else   0   end)   '产出物料_良品数 ',
    sum(case   when   过程   =   '产出物料 '   then   不良品数   else   0   end)   '产出物料_不良品数 ',
    sum(case   when   过程   =   '在线物料 '   then   良品数   else   0   end)   '在线物料_良品数 ',
    sum(case   when   过程   =   '在线物料 '   then   不良品数   else   0   end)   '在线物料_不良品数 '
from   tb
group   by   型号
drop   table   tb

/*
型号   总数   产出物料_良品数     产出物料_不良品数   在线物料_良品数   在线物料_不良品数      
----   ----   -----------             -----------               -----------           -----------  
aaa     4090   2990                           50                                 1000                         20
bbb     2190   1000                           100                               1000                         50

(所影响的行数为   2   行)
*/
发表于:2007-08-17 14:49:243楼 得分:0
declare   @a   table(型号   varchar(10),   总数   int,   良品数   int,   不良品数   int,   过程   varchar(20))
insert   @a   select   'aaa ',   1030,   1000,   20   , '在线物料 '
union   all   select   'aaa ',   1060   ,1000   ,40   , '产出物料 '
union   all   select   'aaa ',   2000   ,1990   ,10   , '产出物料 '
union   all   select   'bbb ',   1090   ,1000   ,50   , '在线物料 '
union   all   select   'bbb ',   1100   ,1000   ,100   , '产出物料 '

select   型号,
总数=sum(总数),
[良品数(产出)]=sum(case   when   过程= '产出物料 '   then   良品数   else   0   end),
[不良品数(产出)]=sum(case   when   过程= '产出物料 '   then   不良品数   else   0   end),
[损耗(产出)]=sum(case   when   过程= '产出物料 '   then   总数-良品数-不良品数   else   0   end),
[良品数(在线)]=sum(case   when   过程= '在线物料 '   then   良品数   else   0   end),
[不良品数(在线)]=sum(case   when   过程= '在线物料 '   then   不良品数   else   0   end),
[损耗(在线)]=sum(case   when   过程= '在线物料 '   then   总数-良品数-不良品数   else   0   end)
from   @a
group   by   型号
--result
/*

型号                   总数                     良品数(产出)           不良品数(产出)         损耗(产出)             良品数(在线)           不良品数(在线)         损耗(在线)            
----------   -----------   -----------   -----------   -----------   -----------   -----------   -----------  
aaa                 4090                 2990                 50                     20                     1000                 20                     10
bbb                 2190                 1000                 100                   0                       1000                 50                     40

(所影响的行数为   2   行)
*/
发表于:2007-08-17 15:37:364楼 得分:0
create   table   tb(型号   varchar(10),总数   int,良品数   int,不良品数   int,过程   varchar(10))

insert   into   tb   values( 'aaa ',       1030,         1000   ,           20     ,         '在线物料 ')
insert   into   tb   values( 'aaa ',       1060,         1000   ,           40     ,         '产出物料 ')
insert   into   tb   values( 'aaa ',       2000,         1990   ,           10     ,         '产出物料 ')
insert   into   tb   values( 'bbb ',       1090,         1000   ,           50     ,         '在线物料 ')
insert   into   tb   values( 'bbb ',       1100,         1000   ,           100   ,         '产出物料 ')

select   型号,
    sum(总数)   总数,
    sum(case   when   过程   =   '产出物料 '   then   良品数   else   0   end)   '产出物料_良品数 ',
    sum(case   when   过程   =   '产出物料 '   then   不良品数   else   0   end)   '产出物料_不良品数 ',
    sum(case   when   过程   =   '在线物料 '   then   良品数   else   0   end)   '在线物料_良品数 ',
    sum(case   when   过程   =   '在线物料 '   then   不良品数   else   0   end)   '在线物料_不良品数 '
from   tb
group   by   型号
drop   table   tb

/*
型号   总数   产出物料_良品数     产出物料_不良品数   在线物料_良品数   在线物料_不良品数      
----   ----   -----------             -----------               -----------           -----------  
aaa     4090   2990                           50                                 1000                         20
bbb     2190   1000                           100                               1000                         50

(所影响的行数为   2   行)
*/
发表于:2007-08-20 09:07:505楼 得分:0
总数-良品-不良品=损耗


快速检索

最新资讯
热门点击