数据库版本mysql5.0,数据库BSDB,表名XS_GRBXFYB(个人报销费用表)DROP TABLE IF EXISTS BSDB.XS_GRBXFYB;
CREATE TABLE BSDB.XS_GRBXFYB (
         ID IDENTITY PRIMARY KEY,
         ND VARCHAR(4),
         BM VARCHAR(8),
         RY VARCHAR(8),
         JANGRBX DECIMAL(10,2),
         JANSCBDBFY DECIMAL(10,2),
         FEBGRBX DECIMAL(10,2),
         FEBSCBDBFY DECIMAL(10,2),
         MARGRBX DECIMAL(10,2),
         MARSCBDBFY DECIMAL(10,2),
         APRGRBX DECIMAL(10,2),
         APRSCBDBFY DECIMAL(10,2),
         MAYGRBX DECIMAL(10,2),
         MAYSCBDBFY DECIMAL(10,2),
         JUNGRBX DECIMAL(10,2),
         JUNSCBDBFY DECIMAL(10,2),
         JULGRBX DECIMAL(10,2),
         JULSCBDBFY DECIMAL(10,2),
         AUGGRBX DECIMAL(10,2),
         AUGSCBDBFY DECIMAL(10,2),
         SEPGRBX DECIMAL(10,2),
         SEPSCBDBFY DECIMAL(10,2),
         OCTGRBX DECIMAL(10,2),
         OCTSCBDBFY DECIMAL(10,2),
         NOVGRBX DECIMAL(10,2),
         NOVSCBDBFY DECIMAL(10,2),
         DECGRBX DECIMAL(10,2),
         DECSCBDBFY DECIMAL(10,2),
         JANSCBDBFY2 DECIMAL(10,2),
         FEBSCBDBFY2 DECIMAL(10,2),
         MARSCBDBFY2 DECIMAL(10,2),
         APRSCBDBFY2 DECIMAL(10,2),
         MAYSCBDBFY2 DECIMAL(10,2),
         JUNSCBDBFY2 DECIMAL(10,2),
         JULSCBDBFY2 DECIMAL(10,2),
         AUGSCBDBFY2 DECIMAL(10,2),
         SEPSCBDBFY2 DECIMAL(10,2),
         OCTSCBDBFY2 DECIMAL(10,2),
         NOVSCBDBFY2 DECIMAL(10,2),
         DECSCBDBFY2 DECIMAL(10,2),        
         GRBXLJFY DECIMAL(10,2),
         SCBDBLJFY DECIMAL(10,2),
         ZLEFY DECIMAL(10,2)
) ;
COMMENT ON COLUMN BSDB.XS_GRBXFYB.ID IS 'ID';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.ND IS '年度';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.BM IS '部门';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.RY IS '人员';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.JANGRBX IS '一月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.JANSCBDBFY IS '一月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.FEBGRBX IS '二月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.FEBSCBDBFY IS '二月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.MARGRBX IS '三月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.MARSCBDBFY IS '三月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.APRGRBX IS '四月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.APRSCBDBFY IS '四月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.MAYGRBX IS '五月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.MAYSCBDBFY IS '五月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.JUNGRBX IS '六月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.JUNSCBDBFY IS '六月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.JULGRBX IS '七月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.JULSCBDBFY IS '七月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.AUGGRBX IS '八月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.AUGSCBDBFY IS '八月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.SEPGRBX IS '九月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.SEPSCBDBFY IS '九月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.OCTGRBX IS '十月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.OCTSCBDBFY IS '十月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.NOVGRBX IS '十一月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.NOVSCBDBFY IS '十一月市场部代报费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.DECGRBX IS '十二月个人报销';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.DECSCBDBFY IS '十二月市场部代报费用';COMMENT ON COLUMN BSDB.XS_GRBXFYB.JANSCBDBFY2 IS '一月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.FEBSCBDBFY2 IS '二月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.MARSCBDBFY2 IS '三月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.APRSCBDBFY2 IS '四月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.MAYSCBDBFY2 IS '五月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.JUNSCBDBFY2 IS '六月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.JULSCBDBFY2 IS '七月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.AUGSCBDBFY2 IS '八月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.SEPSCBDBFY2 IS '九月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.OCTSCBDBFY2 IS '十月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.NOVSCBDBFY2 IS '十一月市场部代报费用2';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.DECSCBDBFY2 IS '十二月市场部代报费用2';COMMENT ON COLUMN BSDB.XS_GRBXFYB.GRBXLJFY IS '个人报销累计费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.SCBDBLJFY IS '市场部代报累计费用';
COMMENT ON COLUMN BSDB.XS_GRBXFYB.ZLEFY IS '总累计费用';由于表结构比较复杂,测试数据可以自行填充
(声明这里的市场代报费用和市场代报费用2是因为有两个市场部,最后的市场部代报累计费用则是这两个部门的累计总和)我在页面有两个下拉框,一个是年度,一个是月份,还有一个查询按钮,年度下拉框为DropDown List(必选一项),而月份下拉框可选可不选
现在的问题是:
一、当我选择了具体的月份,则怎么样查询出对应月份各部门的报销费用值
二、当我没有选择月份,只选择了某一年,则怎么样统计出对应年各部门的报销费用值问怎样用一条sql语句把以上两种情况考虑在一起,因业务需求只能用一条sql语句,不能用存储过程,sql语句可以带两个参数即为两个下拉框的值年度、月份(ND,YF)(测试参数可设成定值)

解决方案 »

  1.   

    可以在sql语句里面写if 判断....
    也可以用case end 
      

  2.   

    http://dev.mysql.com/doc/refman/5.1/zh/functions.html#control-flow-functions
    参考下这个....
      

  3.   

    select nd,sum(字段)
    from tt group by nd 
    where nd=你的值没有月份字段?
      

  4.   


    是的,月份已经拆分成12个对应的字段了,个人的有十二个字段,市场部的也有十二个字段
    其实我好想把具体的文件数据发给你看一下,你就明白了,可惜CSDN上好像不能发送附件的,要发送截图,也是网络路径,我都不知道怎样讲才会让你们更明白我想做什么,你有QQ吗?我想加你把文件发送给你然后我们再讨论可以吗?
      

  5.   

    可以上传到 http://www.access911.net/csdn
      

  6.   

    1、在这里贴文本,OR 上传到www.access911.net/csdn
    ,用WINRAR压缩;
    2、表结构似乎要修改一下。
      

  7.   

    另外你期望的结果是什么?你现在仅提供了测试数据,但没有对应的结果。   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  8.   

    DROP TABLE IF EXISTS BSDB.XS_GRBXFYB;
    CREATE TABLE BSDB.XS_GRBXFYB (
            ID IDENTITY PRIMARY KEY,
            ND VARCHAR(4),另外,楼主你这是MYSQL数据库吗?!还是SQL SERVER啊?
      

  9.   


    各位,有关表数据我已经上传到www.access911.net/csdn上了,名为费用报销.xls的文档和费用报销数据库字段.txt,请下载查看!
      

  10.   

    楼主啊,你的建表脚本,看起来不是mysql的啊
      

  11.   


    对,抱歉,因为之前做的另外一个项目一直是用MySql的数据库,今天修改这个项目则是使用H2数据库的,我也没注意到这一点,因为这前这个项目我没有参与,现在又要负责修改,所以一时忘记了,不过没关系的,H2的语法与SQL Server的语法差不多一样的
      

  12.   


    H2 更简单的,比SQL Server更简单,更小