有如下表txinfo,要执行sql语句,获得下面的结果,我执行
select tx_date,tx_type,sum(xf_amt)as xf_amt from txinfo group by  tx_date,tx_type;
但结果不对,请各位高手指点
tx_date  tx_wz tx_type xf_amt
2009-8-1   01  CH 260.00 
2009-8-1   01  YY 120.00 
2009-8-1   01  LQ 100.00 
2009-8-1   02  LQ 200.00 
2009-8-1   02  CH 650.00 
2009-8-1   03  LQ 200.00 
2009-8-1   03  CH 640.00 
2009-8-2   01  LQ 100.00 
2009-8-2   03   LQ 100.00 
2009-8-2   03  CH 360.00 
2009-8-2   02  LQ 200.00 
结果:
tx_date  tx_type  xf_amt
2009-8-1    CH  1150.00 
2009-8-1    YY  120.00 
2009-8-1    LQ  400.00 
2009-8-2    CH  360.00 
2009-8-2    LQ  300.00 

解决方案 »

  1.   

    xf_amt得数有问题
    你的xf_amt是什么类型的?
      

  2.   


    select tx_date,tx_type,sum(xf_amt) over(partition by tx_type order by tx_date) as xf_amt from txinfo group by  tx_date,tx_type; 
      

  3.   

    create table txinfo(
    tx_date date,tx_wz varchar2(2),tx_type varchar2(2),xf_amt number(6,2));
    --insert data……
    select tx_date,tx_type,sum(xf_amt)as xf_amt from txinfo group by  tx_date,tx_typeTX_DATE TX_TYPE XF_AMT
    2009-8-1 ch 1550
    2009-8-1 lq 500
    2009-8-1 yy 120
    2009-8-2 ch 360
    2009-8-2 lq 400我这边测试没问题
      

  4.   

    select tx_date,tx_type,sum(xf_amt) over(partition by tx_date,tx_wz,tx_type order by tx_date) as xf_amt from txinfo;
      

  5.   

    试试group by  trunc(tx_date),tx_type, 也许你的日期包含有时间
      

  6.   


    --主要时间类型Tx_date,需要统一转化下select to_char(tx_date,'YYYY-MM-DD HH24:MI:SS'),tx_type,sum(xf_amt)as xf_amt from txinfo group by  to_char(tx_date,'YYYY-MM-DD HH24:MI:SS'),tx_type;
      

  7.   

    可能我没有把问题描述清楚,以上语句执行的结果都不对,并且有一两条语句执行时还报错。
    我把数据库的表导出为sql,请大家再帮忙看哈,我要求的结果是得到每天每种付款方式的汇总金额,
    说明:付款金额(xf_amt) = XF_SALESDR - XF_SALESCR
    结果要求如下:
     
    交易日期     付款方式     交易金额  
    2009-8-1     CH         1150.00 
    2009-8-1     YY         120.00 
    2009-8-1     LQ         400.00 
    2009-8-2     CH         360.00 
    2009-8-2     LQ         300.00 sql文件:http://www.newrokinplaza.com/upfile/dayten.rar急急急……
      

  8.   


    select error:[Oracle][odbc][ora]ORA-00979:不是GROUP BY表达式
      

  9.   


    你里面是什么格式呀,不是文本格式样的。顺便问一下tx_type里的1,2,3个表示什么意思,这里是关键。
      

  10.   


    没有啊,是个压缩包,解压后就是个文本的sql文件啊
    加qq38848272,具体说
      

  11.   


    你用的是oracle吗,还是sqlserver
    你的代码执行不了,有错误
    报错如下:datetime不是oracle的关键字;{ts '2008-01-15 00:00:00'}中的{}无法识别
    应该把datetime换成date,;{ts '2008-01-15 00:00:00'}更改为date'2008-01-15',decimal在oracle中一般用number代替 (我是指在oracle中,如果你用的不是oracle可以忽略)
    执行结果如下:
    select xf_txdate,XF_TENDERCODE ,sum(XF_SALESDR)as XF_SALESDR from dayten group by  xf_txdate,XF_TENDERCODE XF_TXDATE XF_TENDERCODE XF_SALESDR
    2008-1-1 CH 106147
    2008-1-1 LQ 1300
    2008-1-1 YY 36202.4
    2008-1-2 CH 57438.9
    2008-1-2 LQ 160
    2008-1-2 YY 13583
    2008-1-3 CH 58813.6
    2008-1-3 LQ 300
    2008-1-3 YY 12535.8
    2008-1-4 CH 34829.7
    2008-1-4 YY 16281.8
    2008-1-5 CH 72485.3
    2008-1-5 LQ 2700
    2008-1-5 YM 9
    2008-1-5 YY 26794.4
    2008-1-6 CH 58733.1
    2008-1-6 LQ 20
    2008-1-6 YY 16393.6
    2008-1-7 CH 44154.4
    2008-1-7 LQ 20
    2008-1-7 YM 0
    2008-1-7 YY 9742
    2008-1-8 CH 42241.4
    2008-1-8 LQ 1500
    2008-1-8 YM 0
    2008-1-8 YY 12134
    2008-1-9 CH 28752.8
    2008-1-9 LQ 400
    2008-1-9 YY 9348.1
    2008-1-10 CH 31058.6
    2008-1-10 LQ 700
    2008-1-10 YY 9628.6
    2008-1-11 CH 34111.9
    2008-1-11 YY 9312.5
    2008-1-12 CH 55706.1
    2008-1-12 LQ 1610
    2008-1-12 YY 19885.9
    2008-1-13 CH 53585.5
    2008-1-13 LQ 800
    2008-1-13 YM 10
    2008-1-13 YY 23482.4
    2008-1-14 CH 35822.6
    2008-1-14 LQ 40
    2008-1-14 YY 16351.5
    2008-1-15 CH 39105.7
    2008-1-15 LQ 310
    2008-1-15 YY 8006.8
    你比较一下,应该没有问题
    我对sqlserver不是很清楚,语法看起来也没问题,检查一下日期字段
    实在不行的话可以去ms-sql server区问问
      

  12.   

    你对这个:SUM([ DISTINCT | ALL ] expr)
       [ OVER (analytic_clause) ]
    语法熟悉吗?不熟悉就需要看看了。你这个是在误导人家嘛?
    你用的SUM统计函数的意思是这样的:
    e.g:SELECT manager_id, last_name, salary,
       SUM(salary) OVER (PARTITION BY manager_id ORDER BY salary
       RANGE UNBOUNDED PRECEDING) l_csum
       FROM employees;
    --Results as follows:
    MANAGER_ID LAST_NAME           SALARY     L_CSUM
    ---------- --------------- ---------- ----------
           100 Mourgos               5800       5800
           100 Vollman               6500      12300
           100 Kaufling              7900      20200
           100 Weiss                 8000      28200
           100 Fripp                 8200      36400
           100 Zlotkey              10500      46900
           100 Raphaely             11000      68900
           100 Cambrault            11000      68900
           100 Errazuriz            12000      80900
    . . .
           149 Taylor                8600      30200
           149 Hutton                8800      39000
           149 Abel                 11000      50000
           201 Fay                   6000       6000
           205 Gietz                 8300       8300
               King                 24000      24000
      

  13.   


    是的啊,我用的是正版的Oracle 10g啊,不过我是用Pb10连接数据库进行操作的。
      

  14.   

    用的是oracle...
    可是你的创建表的代码在oracle上会报错的
    没用过pb10,不知道怎么回事
    你可以按我上面说的改一下字段类型
    在oracle 自带的sql plus上运行看看
    如果结果正常的话很可能就是pb连接的问题
      

  15.   


    天啊,闹鬼了,昨天执行后出来的结果不对,今天的就对了。
    非常感谢wildwave兄