表C_DATA_dict_param
dept_id param_code pvalue
1 11 32
1 12 435
1 13 34
1 14 35
1 15 345
2 11 56
2 12 34
2 13 345
2 14 35
3 11 35
3 12 345
3 13 35
3 14 345
3 15 345
4 11 45
4 12 456
-----------------------------
表C_SET_big_consume
cost_subj_code dept_id
A 1
B 2
B 1
----------------------------
需要得到的结果..............结果
cost_subj_code param_code 各个单位的合计
A 11 XXX
A 12 XXX
A 13 XXX
A 14 XXX
A 15 XXX
B 11 XXX
B 12 XXX
B 13 XXX
B 14 XXX
B 15 XXXXXX为各个单位的合计值
表C_SET_big_consume如果指定了A对应1则合计值不统计单位1的.
表C_SET_big_consume如果指定了B对应1,2则合计值不统计单位1和2的.
dept_id param_code pvalue
1 11 32
1 12 435
1 13 34
1 14 35
1 15 345
2 11 56
2 12 34
2 13 345
2 14 35
3 11 35
3 12 345
3 13 35
3 14 345
3 15 345
4 11 45
4 12 456
-----------------------------
表C_SET_big_consume
cost_subj_code dept_id
A 1
B 2
B 1
----------------------------
需要得到的结果..............结果
cost_subj_code param_code 各个单位的合计
A 11 XXX
A 12 XXX
A 13 XXX
A 14 XXX
A 15 XXX
B 11 XXX
B 12 XXX
B 13 XXX
B 14 XXX
B 15 XXXXXX为各个单位的合计值
表C_SET_big_consume如果指定了A对应1则合计值不统计单位1的.
表C_SET_big_consume如果指定了B对应1,2则合计值不统计单位1和2的.
解决方案 »
- ORACLE导出数据问题
- create database 如何关联tablespace[非temporary table space]和user
- 表连接问题
- 如何授权创建lob?
- 誤刪除了數據文件,請問應該如何解決?
- 如何提高查询效率?大侠帮忙!!
- 设计时期可以连上oracle 运行时期出错。(5555...帮帮我)
- 誰有種完全靠文件拷貝,修改註冊表就能讓oracle客戶端能用(ADO 下)
- 那位同僚给我贴上这个 CREATE DATABASE LINK 语句的详细说明来,谢谢。手头没有资料,Oracle帮助又不知怎么找。
- oracle查询优化问题
- 求sql查询语句
- 如何把导入文本文件的查询结果导回Oracle数据库?
(select sum(case when c.dept_id <> b.dept_id then a.pvalue else 0 end)
from C_DATA_dict_param c) 各个单位的合计
from C_DATA_dict_param a,C_SET_big_consume b
where a.dept_id = b.dept_id
group by b.cost_subj_code,a.param_code
报错 :不是 group by 的表达式
from C_DATA_dict_param a,C_SET_big_consume b
where a.dept_id = b.dept_id
group by b.cost_subj_code,a.param_code
抱歉,不要这个group by b.cost_subj_code,a.param_code
表C_SET_big_consume如果指定了B对应1,2则合计值不统计单位1和2的. 上面两句话没看明白
from C_DATA_dict_param a,C_SET_big_consume b
where a.dept_id = b.dept_id
group by a.param_code
from C_DATA_dict_param c
合计的时候没有考虑到 必须要是在C_SET_big_consume中的同一个cost_subj_code下的值不统计
from C_DATA_dict_param c
合计的时候没有考虑到 必须要是在C_SET_big_consume中的同一个cost_subj_code下的值不统计
楼主问问题的时候并没有:必须要是在C_SET_big_consume中的同一个cost_subj_code下的值不统计你自己加这个条件就是了
C_SET_big_consume表实现的是类似于黑名单的功能
如果没有这个表
结果
针对 A和B统计出的结果一样的都是统计全部的单位.有了这个表后,在统计A的时候就不是统计全部单位了,而是统计除去在C_SET_big_consum表中A对应的单位
(select sum(case when c.dept_id <> b.dept_id then a.pvalue else '0' end)
from C_DATA_dict_param c where DateFlag ='20090100' ) 各个单位的合计
from C_DATA_dict_param a,C_SET_big_consume b
where a.dept_id = b.dept_id and A.DateFlag ='20090100' and B.dateFlag='20090100'
order by b.cost_subj_code,a.param_code
这个语句出来的结果COST_SUBJ_CODE PARAM_CODE 各个单位的合计10205 01 312
10205 01 1256
10205 02 2983
10205 02 3588
10205 03 312000
10205 03 1570000
10205 04 1560000
10206 01 1099
10206 02 2512
10206 03 9420000
1020702 01 1106
1020702 02 1264
---------------------
10205 01
不应该有重复的... 而且值也不对.....
先声明一个临时表
然后将 C_DATA_dict_param 和C_SET_big_consume 中的COST_SUBJ_CODE 叉乘的结果插入然后删除临时表中 deptid 和COST_SUBJ_CODE 出现的对应记录然后针对临时表sum group by就OK了
from C_DATA_dict_param a,C_SET_big_consume b
group by b.cost_subj_code,a.param_code
having instr(wmsys.wm_concat(b.dept_id),a.dept_id)=0
这个试试行吗
实在搞不定
SELECT T1.cost_subj_code,T.* C_DATA_dict_param T,C_SET_big_consume T1
WHERE T.dept_id=T1.dept_id(+)