现在表t有两列:a,b 数据为:
a b
1 1
1 1
1 1
1 1 4行
1 2
1 2 2行
1 3 1行
2 1
2 1
2 1
2 1
2 2
2 2
2 3 我想以a列分组 当b列值为1是的总行数 - 当b行不等于1时的总行数(4-2-1),最后结果想得到是:
1 (4-2-1)
2 (4-2-1) 这两行结果 SQl怎么写呀???
a b
1 1
1 1
1 1
1 1 4行
1 2
1 2 2行
1 3 1行
2 1
2 1
2 1
2 1
2 2
2 2
2 3 我想以a列分组 当b列值为1是的总行数 - 当b行不等于1时的总行数(4-2-1),最后结果想得到是:
1 (4-2-1)
2 (4-2-1) 这两行结果 SQl怎么写呀???
解决方案 »
- 请大家帮忙 用proc同时登入两个数据库
- sqlldr装在效率问题,请高手给个方案,有具体环境描述
- 看看这两个句子
- a字段值是:可能为空或数字或英语字母及非字符
- 问3个比较类似的SQL语句的写法?有什么不一样?
- Oracle 9i安装过程中当双击通用安装器时只出现通用安装器LOGO画面,然后就无反应了.
- 一个菜鸟 诚心请问:oracle8i 或9i 的 i是 什么意思,代号?纯粹的版本号?
- merge程序执行时的问题
- 函数问题:很简单,在线等待。
- 建立过程报错!请帮忙看一下谢谢!
- 非unicode怎么转换成unicode
- 存储过程输入参数的数据量比较大,要超过VARCHAR2的范围,有没有好的办法,还要优化速度
(select a,count(1)over(PARTITION BY a,b)xh from table) GROUP BY a
或者这样
select a,wm_concat(xh||'-')over(PARTITION BY a) from
(select a,count(1)over(PARTITION BY a,b)xh from table)
我没有测试过,你试验一下,看看好用不!
from ((select a, b, max(rn) rn
from (select a,
b,
row_number() over(PARTITION by a, b order by to_char(a) || to_char(b)) rn
from test t)
GROUP by a, b))
group by a
a b
1 1
1 1
1 1
1 1 4行
1 2
1 2 2行
1 3 1行
2 1
2 1
2 1
2 1
2 2
2 2
2 3 我想以a列分组 当b列值为1是的总行数 - 当b行不等于1时的总行数(4-2-1),最后结果想得到是:
1 (4-2-1)=1 这里是数字,不是拼串。
2 (4-2-1)=1 这两行结果 SQl怎么写呀???
A B
---------- ----------
1 1
1 1
1 1
1 1
1 2
1 2
1 3
2 1
2 1
2 1
2 1
2 2
2 2
2 3
14 rows selected
SQL>
SQL> select a,
2 sum(case
3 when rn = 1 then
4 cu
5 else
6 -cu
7 end) su
8 from (select a,
9 b,
10 cu,
11 row_number() over(partition by a order by cu desc) rn
12 from (select a, b, count(1) cu from t group by a, b order by a))
13 group by a;
A SU
---------- ----------
1 1
2 1
select a,max(cu)*2-sum(cu) from
(select a, b, count(1) cu from t group by a, b order by a
) group by b这样能满足要求,因为b=1时,cu是最大的(这个条件是一定要有) 刚好满足!
如果没有这个条件,就是楼上的SQL总之:谢谢!
case when dealtypeId_Id=1 then cu else -cu end
) from(select priceId_Id, dealtypeId_Id, count(1) cu from tb_decticketflow group by priceId_Id, dealtypeId_Id order by priceId_Id)group by priceId_Id