表A
XMBH     XMMC      列名
-----------------------------
fajy     丰奥
lxjy     理想
yg100    阳光
DAJY     东岸嘉园
LYJS     龙园
TMXC     天马相城
表b
XMBH     Price    Date   列
-----------------------------------
fajy     80000    20100609
fajy     80000    20100624
lxjy     70000    20100718
fajy     40000    20101108
-------------------------------------------------------------------------------------------------
需要查询出的结果集
包含每个项目  每个月的Price的一个合计   项目当月没有的为0
A表里放着所有项目的信息   如  编号,名称
B表里放着  编号  和  一些收费信息   包括收费日期
根据收费日期求每个项目每个月的合计    
但这个项目不一定每一个月都有收费信息总之就是基本和上面的A,B表的  数据   查询出每个项目在每个月里的收费信息后来  我又加了个表里  只放  1.2.3.......12   做月份链接用,思路感觉有问题
求好心人帮帮忙    给个例子  指点下   小弟先谢过了
XMMC               一月   二月   三月   四月   五月   六月...................十二月     合计    《===列名
上年 .........................................................................................天马相城阳光          
合计 ........................................................................................
累计 ........................................................................................
--------------------------------------------------------------------------------------------------

解决方案 »

  1.   

    最好给出完整的表结构,测试数据,计算方法和正确结果.发帖注意事项
    http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281例如:上年是什么东西?
    例如:合计是什么东西?
    例如:累计是什么东西?
      

  2.   

    脚本1  是M_Project   脚本2   是ZJGL_GCXMZJZFSPB需要出的结果集项目名称               一月    二月      三月.........................十二月   合计
    上年末                 97897  789789   798789                             789789798
    北湖村安置房           123    465      789                                  456464
    东岸嘉园               465    798789   798798                               4654654
    ............................................................................
    ............................................................................
    ............................................................................
    雅居园二期            465465   789789   465465                               6454654
    合计         当前列合计(不包含上年末).......  
    累积         ........上年末+当前列
     ------------------------------------------------------------------------
    if exists (select * from sysobjects where id = OBJECT_ID('[M_Project]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 
    DROP TABLE [M_Project]CREATE TABLE [M_Project] (
    [ProjectID] [char]  (6) NOT NULL,
    [ProjectNM] [varchar]  (100) NOT NULL,
    [BeginDate] [char]  (8) NOT NULL,
    [EndDate] [char]  (8) NOT NULL,
    [ItemsCount] [int]  NOT NULL,
    [IsFinished] [char]  (1) NOT NULL,
    [ProjectSort] [varchar]  (500) NULL,
    [ProjectType] [varchar]  (500) NULL,
    [ProjectScale] [varchar]  (100) NULL,
    [SortNo] [char]  (3) NOT NULL,
    [Note] [varchar]  (500) NULL)ALTER TABLE [M_Project] WITH NOCHECK ADD  CONSTRAINT [PK_M_Project] PRIMARY KEY  NONCLUSTERED ( [ProjectID] )
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'BHJG','北湖村安置房','20090101','20091002',0,'0','003','10')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'DAJY','东岸嘉园','20080101','20091010',17,'0','002','2')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'DHJG','大汉裕安置房','20080101','20100202',0,'0','003','12')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'FAJY','丰奥嘉园','201002','201207',19,'0','002','建筑日照标准、日照间距须符合有关规定,同时须按《城市居住区规划设计规范》要求配建居民日常生活所需的公共服务设施及中水等设施,其中须配建1处用地面积不小于1.8公顷30班小学、1处用地面积不小于0.36公顷的12班幼托、1处建筑面积不小于1200平方米的室内副食品市场(菜市场)。规划建筑后退体育西路、正丰路、康虹大街规划红线不小于15米,后退南侧15米规划道路红线不小于10米。')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'HYCL','涵玉翠岭','20080201','20091010',35,'0','002','4')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'LXJY','理想嘉园','200808','201005',8,'0','002','土地位置:高新区4号地块,世纪大道、轻骑路南侧,开拓路东侧,小汉峪沟西侧,土地面积(m2):总面积43094,其中地块A:17411;地块B:')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'LYJS','龙园','200812','201012',24,'0','002','停车率不小于100%。规划建筑后退小汉峪沟河道防护绿线不小于5米,须留出凤山南路至大山坡山体宽度不小于60米的视线通廊,可结合用地布局设置小区配套绿地。须满足居住区设计规范、日照要求、建筑间距、容积率等相关规定、规范要求,并按《城市居住区规划设计规范》要求安排居民日常生活所需的公共服务设施(其中须配建1处用地面积不小于0.18公顷的6班幼托)及中水等设施。住宅套型建筑面积控制须满足国家和省市有关规定要求。')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'NHJG','南湖村安置房','20090101','20090101',0,'0','003','11')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'SAJY','舜奥嘉园','20080101','20091010',0,'0','002','7')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'TMXC','天马相城','20080101','20091011',0,'0','002','8')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'XHJG','小汉裕安置房','201004','201207',0,'0','003','停车率不小于100%,并一并实施用地内规划公用道路,以供相邻地块使用。规划建筑后退规划道路红线不小于10米。住宅建筑日照标准、日照间距符合有关规定。同时须按《城市居住区规划设计规范》要求配建居民日常生活所需的公共服务设施(其中须配建一处用地面积不少于0.43公顷的12班幼托)及中水等设施。住宅套型建筑面积控制须满足国家有关规定要求。妥善处理好山体整治事宜,并根据《济南市水土保持管理办法》合理控制地面硬化率。')
    INSERT [M_Project] ([ProjectID],[ProjectNM],[BeginDate],[EndDate],[ItemsCount],[IsFinished],[SortNo],[Note]) VALUES ( 'YJYE','雅居园二期','20080101','20091010',0,'0','002','9')
    -----------------------------------------------------------------------------------
    if exists (select * from sysobjects where id = OBJECT_ID('[ZJGL_GCXMZJZFSPB]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 
    DROP TABLE [ZJGL_GCXMZJZFSPB]CREATE TABLE [ZJGL_GCXMZJZFSPB] (
    [SPBH] [int]  IDENTITY (1, 1)  NOT NULL,
    [XMBH] [char]  (6) NOT NULL,
    [HTBH] [char]  (20) NOT NULL,
    [HTBH2] [varchar]  (100) NOT NULL,
    [SKDW] [varchar]  (100) NOT NULL,
    [GCJS] [decimal]  (18,4) NULL,
    [YFKJE] [decimal]  (18,4) NULL,
    [BCSQJE] [decimal]  (18,4) NULL,
    [SJSPFKJE] [decimal]  (18,4) NULL DEFAULT ((0.0000)),
    [LJFKJE] [decimal]  (18,4) NULL,
    [HTFKBL] [varchar]  (100) NULL,
    [JSFKBL] [varchar]  (100) NULL,
    [YDFKTJ] [varchar]  (500) NULL,
    [XXJD] [varchar]  (100) NULL,
    [BGCL] [varchar]  (100) NULL,
    [LGCL] [varchar]  (100) NULL,
    [ZJYT] [varchar]  (200) NULL,
    [KHYH] [varchar]  (50) NULL,
    [YHZH] [varchar]  (50) NULL,
    [SPRQ] [char]  (8) NULL,
    [XGRQ] [datetime]  NULL,
    [IsEnd] [char]  (2) NULL DEFAULT ((1)),
    [CZY] [varchar]  (20) NOT NULL,
    [SPBHCODE] [char]  (10) NULL)ALTER TABLE [ZJGL_GCXMZJZFSPB] WITH NOCHECK ADD  CONSTRAINT [PK_ZJGL_GCXMZJZFSPB] PRIMARY KEY  NONCLUSTERED ( [SPBH] )
    SET IDENTITY_INSERT [ZJGL_GCXMZJZFSPB] ONINSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 31,'LYJS','00000000000000000368','1','济南四建',1.0000,1.0000,1.0000,10.0000,10.0000,'1','1','1','1','1','1','资金用途1','1','1','20100612','2010-6-12 0:00:00','1','1','001')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 32,'LYJS','00000000000000000368','1','济南四建',1.0000,1.0000,1.0000,10.0000,10.0000,'1','1','1','1','1','1','资金用途2','1','1','20100612','2010-6-12 0:00:00','1','1','002')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 33,'LYJS','00000000000000000368','1','济南四建',1.0000,1.0000,1.0000,10.0000,10.0000,'1','1','1','1','1','1','资金用途3','1','1','20100612','2010-6-12 0:00:00','1','1','003')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 34,'DAJY','00404','东拓-2009-11-02-020310-01','第一太平戴维斯物业顾问(北京)有限公司',0.0000,0.0000,90000.0000,0.0000,90000.0000,'0.5%','0.00%','千万二千万人','尔维特我让他','10','10','utyugh','中国银行','998877456','20100610','1','邹鹤','0000000010')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 35,'DAJY','00404','东拓-2009-11-02-020310-01','第一太平戴维斯物业顾问(北京)有限公司',0.0000,90000.0000,70000.0000,0.0000,160000.0000,'0.90%','0.00%','asdfsdaf','asfasdf','1','11','玩儿去玩儿','20100610','2010-6-10 10:11:57','1','邹鹤','0000000012')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 36,'LYJS','00000000000000000500','1','济南四建',1.0000,1.0000,1.0000,1.4435,10.0000,'1','1','1','1','1','1','资金用途3','1','1','20100612','2010-6-12 0:00:00','0','1','001')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 37,'LYJS','00000000000000000500','1','济南四建',1.0000,1.0000,1.0000,1.6000,10.0000,'1','1','1','1','1','1','资金用途3','1','1','20100612','2010-6-12 0:00:00','0','1','002')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 38,'LYJS','00000000000000000500','1','济南四建',1.0000,1.0000,1.0000,1.0800,10.0000,'1','1','1','1','1','1','资金用途3','1','1','20100612','2010-6-12 0:00:00','0','1','003')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 39,'LYJS','00000000000000000500','1','济南四建',1.0000,1.0000,1.0000,1.9000,10.0000,'1','1','1','1','1','1','资金用途3','1','1','20100612','2010-6-12 0:00:00','1','1','004')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 42,'LYJS','00000000000000000500','1','济南四建',1.0000,1.0000,1.0000,1.9000,10.0000,'1','1','1','1','1','1','资金用途3','1','1','20100512','2010-6-12 0:00:00','1','1','004')
    INSERT [ZJGL_GCXMZJZFSPB] ([SPBH],[XMBH],[HTBH],[HTBH2],[SKDW],[GCJS],[YFKJE],[BCSQJE],[SJSPFKJE],[LJFKJE],[HTFKBL],[JSFKBL],[YDFKTJ],[XXJD],[BGCL],[LGCL],[ZJYT],[KHYH],[YHZH],[SPRQ],[XGRQ],[IsEnd],[CZY],[SPBHCODE]) VALUES ( 43,'LYJS','00000000000000000500','1','济南四建',1.0000,1.0000,1.0000,1.9000,10.0000,'1','1','1','1','1','1','资金用途3','1','1','20100912','2010-6-12 0:00:00','1','1','004')SET IDENTITY_INSERT [ZJGL_GCXMZJZFSPB] OFF
    ------------------------------------------------------------------------------------
      

  3.   

    大致这样写:
    select XMMC = '上年' ,
           sum(case datepart(mm,b.date) when 1 then b.Price else 0 end) [一月],
           sum(case datepart(mm,b.date) when 2 then b.Price else 0 end) [二月],
           ...
           sum(case datepart(mm,b.date) when 12 then b.Price else 0 end) [十二月],
           sum(b.Price) 合计
    from b where datediff(yy,Date,getdate()) = 1
    union all
    select a.XMMC ,
           sum(case datepart(mm,b.date) when 1 then b.Price else 0 end) [一月],
           sum(case datepart(mm,b.date) when 2 then b.Price else 0 end) [二月],
           ...
           sum(case datepart(mm,b.date) when 12 then b.Price else 0 end) [十二月],
           sum(b.Price) 合计
    from a , b where a.XMBH = b.XMBH group by a.XMMC
    union all
    select XMMC = '合计' ,
           sum(case datepart(mm,b.date) when 1 then b.Price else 0 end) [一月],
           sum(case datepart(mm,b.date) when 2 then b.Price else 0 end) [二月],
           ...
           sum(case datepart(mm,b.date) when 12 then b.Price else 0 end) [十二月],
           sum(b.Price) 合计
    from b where datediff(yy,Date,getdate()) = 0
    union all
    select XMMC = '累计' ,
           sum(case datepart(mm,b.date) when 1 then b.Price else 0 end) [一月],
           sum(case datepart(mm,b.date) when 2 then b.Price else 0 end) [二月],
           ...
           sum(case datepart(mm,b.date) when 12 then b.Price else 0 end) [十二月],
           sum(b.Price) 合计
    from b 
      

  4.   

    再稍微更改一下:
    select XMMC = '上年' ,
           sum(case datepart(mm,b.date) when 1 then b.Price else 0 end) [一月],
           sum(case datepart(mm,b.date) when 2 then b.Price else 0 end) [二月],
           ...
           sum(case datepart(mm,b.date) when 12 then b.Price else 0 end) [十二月],
           sum(b.Price) 合计
    from b where datediff(yy,Date,getdate()) = 1
    union all
    select a.XMMC ,
           sum(case datepart(mm,b.date) when 1 then b.Price else 0 end) [一月],
           sum(case datepart(mm,b.date) when 2 then b.Price else 0 end) [二月],
           ...
           sum(case datepart(mm,b.date) when 12 then b.Price else 0 end) [十二月],
           sum(b.Price) 合计
    from a , b where a.XMBH = b.XMBH and datediff(yy,Date,getdate()) = 0 group by a.XMMC
    union all
    select XMMC = '合计' ,
           sum(case datepart(mm,b.date) when 1 then b.Price else 0 end) [一月],
           sum(case datepart(mm,b.date) when 2 then b.Price else 0 end) [二月],
           ...
           sum(case datepart(mm,b.date) when 12 then b.Price else 0 end) [十二月],
           sum(b.Price) 合计
    from b where datediff(yy,Date,getdate()) = 0
    union all
    select XMMC = '累计' ,
           sum(case datepart(mm,b.date) when 1 then b.Price else 0 end) [一月],
           sum(case datepart(mm,b.date) when 2 then b.Price else 0 end) [二月],
           ...
           sum(case datepart(mm,b.date) when 12 then b.Price else 0 end) [十二月],
           sum(b.Price) 合计
    from b 
      

  5.   


    select a.ProjectID ,
           sum(case datepart(mm,b.sprq) when 1 then b.sjspfkje else 0 end) [一月],
           sum(case datepart(mm,b.sprq) when 2 then b.sjspfkje else 0 end) [二月],
           sum(case datepart(mm,b.sprq) when 12 then b.sjspfkje else 0 end) [十二月],
           sum(b.sjspfkje) 合计
    from M_Project a,ZJGL_GCXMZJZFSPB b where a.ProjectID = b.XMBH and datediff(yy,sprq,getdate()) = 0 group by a.ProjectID
    这一段只查出来关联起来的了  两条数据了没有的关联起来的 怎么也能查出来加上去啊
      

  6.   

    如下两个,你自己试试.
    select a.ProjectID ,
      sum(case datepart(mm,b.sprq) when 1 then b.sjspfkje else 0 end) [一月],
      sum(case datepart(mm,b.sprq) when 2 then b.sjspfkje else 0 end) [二月],
      sum(case datepart(mm,b.sprq) when 12 then b.sjspfkje else 0 end) [十二月],
      sum(b.sjspfkje) 合计
    from M_Project a left join ZJGL_GCXMZJZFSPB b on a.ProjectID = b.XMBH and datediff(yy,sprq,getdate()) = 0 group by a.ProjectIDselect a.ProjectID ,
      sum(case datepart(mm,b.sprq) when 1 then b.sjspfkje else 0 end) [一月],
      sum(case datepart(mm,b.sprq) when 2 then b.sjspfkje else 0 end) [二月],
      sum(case datepart(mm,b.sprq) when 12 then b.sjspfkje else 0 end) [十二月],
      sum(b.sjspfkje) 合计
    from M_Project a left join ZJGL_GCXMZJZFSPB b where a.ProjectID = b.XMBH and datediff(yy,sprq,getdate()) = 0 group by a.ProjectID
      

  7.   

    写错了,是如下两个.
    select a.ProjectID ,
      sum(case datepart(mm,b.sprq) when 1 then b.sjspfkje else 0 end) [一月],
      sum(case datepart(mm,b.sprq) when 2 then b.sjspfkje else 0 end) [二月],
      sum(case datepart(mm,b.sprq) when 12 then b.sjspfkje else 0 end) [十二月],
      sum(b.sjspfkje) 合计
    from M_Project a left join ZJGL_GCXMZJZFSPB b on a.ProjectID = b.XMBH and datediff(yy,sprq,getdate()) = 0 group by a.ProjectIDselect a.ProjectID ,
      sum(case datepart(mm,b.sprq) when 1 then b.sjspfkje else 0 end) [一月],
      sum(case datepart(mm,b.sprq) when 2 then b.sjspfkje else 0 end) [二月],
      sum(case datepart(mm,b.sprq) when 12 then b.sjspfkje else 0 end) [十二月],
      sum(b.sjspfkje) 合计
    from M_Project a left join ZJGL_GCXMZJZFSPB b on a.ProjectID = b.XMBH where datediff(yy,sprq,getdate()) = 0 group by a.ProjectID