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

求 合计数据的SQL语句 超级变态的合计

2012-04-23 
求高手指点 合计数据的SQL语句 在线等 超级变态的合计。又表格结构如下:SQL code创建表格:CREATE TABLE [db

求高手指点 合计数据的SQL语句 在线等 超级变态的合计。
又表格结构如下:

SQL code
创建表格:CREATE TABLE [dbo].[TableAB](    [ID] [int] IDENTITY(1,1) NOT NULL,--    [BMName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,--部门名称    [BMCode] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,--部门大类代码:总部    [SmallBMCode] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,--部门小类代码:小部    [EType] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,--种类类型    [EDatetime] [datetime] NULL--日期) ON [PRIMARY]--插入测试数据:insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第一小部','ID001','SM001','A','2012-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第一小部','ID001','SM001','B','2011-03-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第一小部','ID001','SM001','C','2012-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第一小部','ID001','SM001','B','2011-05-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第一小部','ID001','SM001','C','2012-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第一小部','ID001','SM001','A','2012-07-02')--------------------------------------------------insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第二小部','ID001','FM002','C','2012-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第二小部','ID001','SM002','A','2011-02-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第二小部','ID001','SM002','B','2012-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第二小部','ID001','SM002','A','2011-02-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第一总部第二小部','ID001','SM002','B','2012-01-02')---------------------------------------------------insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第一小部','ID002','FM001','A','2012-03-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第一小部','ID002','FM001','C','2011-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第一小部','ID002','FM001','B','2012-04-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第一小部','ID002','FM001','A','2011-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第一小部','ID002','FM001','C','2011-06-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第一小部','ID002','FM001','A','2012-01-02')--------------------------------------------------insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第二小部','ID002','FM002','A','2012-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第二小部','ID002','FM002','C','2011-10-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第二小部','ID002','FM002','A','2012-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第二小部','ID002','FM002','C','2011-11-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第二小部','ID002','FM002','B','2012-01-02')---------------------------------------------------insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第三小部','ID002','FM003','B','2012-12-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第三小部','ID002','FM003','C','2011-09-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第三小部','ID002','FM003','A','2012-01-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第三小部','ID002','FM003','A','2011-08-02')insert into TableAB(BMName,BMCode,SmallBMCode,EType,EDatetime) values('第二总部第三小部','ID002','FM003','C','2012-01-02') 



输出统计如下:
输出格式如图:连接地址:http://hi.csdn.net/space-231298-do-album-picid-1093242.html

SQL code
部门    2012年1-2月            小计    总部小计    2011年1-2月同期            小计    总部小计    同期小部比较    同期总部比较    A    B    C            A    B    C                第一总部第一小部      5    2    2    9    24    3    2    2    7    15    2    9第一总部第二小部      7    4    4    15        4    1    3    8        -7    第二总部第一小部      6    6    7    19    45    5    6    4    15    50    4    -5第二总部第二小部      3    3    9    15        6    7    5    18        -3    第二总部第三小部      2    7    2    11        7    4    6    17        -6    合计    23    22    24    69    69    25    20    20    65    65    -10    4


[解决办法]

[解决办法]
SQL code
select A.smallbmcode,A.bmname,(select count(*) from tableab where smallbmcode=A.smallbmcode and EType='A' and edatetime between ... and ...) sA,(select count(*) from tableab where smallbmcode=A.smallbmcode and EType='B' and edatetime between ... and ...) sB,(select count(*) from tableab where smallbmcode=A.smallbmcode and EType='C' and edatetime between ... and ...) sC,....这里插入依次插入去年的统计A.bmsfrom(select smallbmcode,bmname,count(*) bms from tableab group by smallbmcode,bmname) as A
[解决办法]
最后显示的结果,用SSRS很容易做。如果单纯用T-SQL写,比较麻烦了。

热点排行