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

大侠们,高分接招啊SQL2000 按部门项目交叉表统计有关问题

2012-12-15 
大侠们,高分接招啊···SQL2000 按部门项目交叉表统计问题现有表A代码名称101一部101011组101022组。。102。。80

大侠们,高分接招啊···SQL2000 按部门项目交叉表统计问题


现有表A  代码          名称
         101            一部
         10101          1组 
         10102          2组
          。。
         102
         。。
         801
         80102
         
         。。

         QT
。。。。

表A记录不固定,后续有增加

表B   项目
      T1
      T2
      T3

      ....

表B 项目数量也会动态变化

表C 如       日期         代码        项目        金额 
            201201        10101        T1         100
            201201        10101        t6          20
        。。。。
            201201        80102        T1         50
            201201         QT           T11        90

            201202        10201        T2         100
            201203        10804        t19         20
            201203        80102        T1         50
         。。。。。。
表C中 代码和项目只在存在有金额时才有记录


现在需求 表M        
 表格式如: 代码  名称     t1  t2  t3  t4 ..  合计(t1+t2+t3+t4..) ..  t10  t12  t13 .....合计 ()  ...总计 ()

            101    一部
            10101  一组
            。。。


            合计  
  
按日期范围段来查询统计报表M。 代码名称需要包含表A的所有代码, 项目T1...需要全部显示出表B项目。为0也需要列出来。






[最优解释]
你这个很easy!其实最终要求是可以动态去将纵向数据《项目》转变为横排列,
然后多表联查数据得出结果!

你给出一份规范完整的演示数据SQL脚本。我来帮你写!
[其他解释]
没看懂。
[其他解释]
上一点结果的数据看看
[其他解释]

引用:
你这个很easy!其实最终要求是可以动态去将纵向数据《项目》转变为横排列,
然后多表联查数据得出结果!

你给出一份规范完整的演示数据SQL脚本。我来帮你写!

行项目需要显示项目表里所有的项目,列部门需要显示所有部门表里的部门。并且项目和部门都会有增加 而不是固定的的。
CREATE TABLE dbo.bm
(
dept_code          NVARCHAR (20) NOT NULL,
dept_name          NVARCHAR (40) NOT NULL,
    is_last            BIT DEFAULT (0)  NOT NULL
   
)
GO

INSERT INTO bm VALUES ('101' ,'一部门','0')
INSERT INTO bm VALUES ('10101' ,'一组','1')
INSERT INTO bm VALUES ('10102' ,'二组','1')
INSERT INTO bm VALUES ('102' ,'二部门','1')
INSERT INTO bm VALUES ('801' ,'八部门','0')
INSERT INTO bm VALUES ('80101' ,'一组','1')
INSERT INTO bm VALUES ('80103' ,'三组','1')
INSERT INTO bm VALUES ('AAAAAA' ,'公共部门','1')

go




CREATE TABLE dbo.xm
(
cost_code     VARCHAR (20) NOT NULL,
cost_name     VARCHAR (40) NOT NULL,
PRIMARY KEY (cost_code)
)
GO

INSERT INTO xm VALUES ('0001' ,'项目一')
INSERT INTO xm VALUES ('0002' ,'项目二')
INSERT INTO xm VALUES ('0701' ,'项目七')
INSERT INTO xm VALUES ('0808' ,'项目八')
INSERT INTO xm VALUES ('1001' ,'项目十')

go






CREATE TABLE dbo.mm
(
year_month       CHAR (6) NOT NULL,
dept_code        VARCHAR (20) NOT NULL,
cost__code   VARCHAR (20) NOT NULL,
amount       NUMERIC (16,2)  NULL
)
GO

INSERT INTO mm VALUES ('201201' ,'10101','0001','200.00')
INSERT INTO mm VALUES ('201201' ,'10102','0001','300.00')
INSERT INTO mm VALUES ('201201' ,'10102','0002','100.00')
INSERT INTO mm VALUES ('201201' ,'102','0808','200.00')
INSERT INTO mm VALUES ('201201' ,'aaaaa','0001','200.00')
INSERT INTO mm VALUES ('201202' ,'10101','0002','200.00')
INSERT INTO mm VALUES ('201202' ,'10101','0701','700.00')

GO

需求的报表按 year_month 段查询汇总显示,格式显示,以查询201201为例
                 dept_code   (项目) 0001       0002      0701     0808      1001  。。。


                    101               500.00     100.00   0          0       0
                 10101             200.00     0          0        0        0
                 10102             300.00     100.00     0        0        0
                 102                 0        0         0        200.00   0
                 801
                 80101
                 80103
                 aaaaaa              200.00    0        0        0        0
                  合计                  700.00     100.00            200.00  0

部门、项目,均不固定,后续增加时,报表需要同步的增加上。报表里需要包含当期所有的部门和项目。
              

热点排行