问一句比较麻烦的SQL语句问题描述:
ID ColumnA ColumnB ColumnC
1 A B 0
2 A B 2
3 A B 04 A C 0
5 A C 1
6 A C 3
7 A C 0我想根据ColumnA和ColumnB进行排序,然后将分组的顺序值插入ColumnC中,
希望最后ColumnC为有序的整数.其中,非0的往前挪,为0的向后靠
希望运行sql之后的值为:ID ColumnA ColumnB ColumnC
1 A B 2
2 A B 1 原先非0,变为1
3 A B 34 A C 3 原先为0,
5 A C 1 原先非0,
6 A C 2 原先非0,往前靠变为2
7 A C 4 原先为0其中ID=2和ID=5,ID=6的记录,其ColumnC值原先不为0,保持原有的顺序,只是去掉其中间隔的数,
变成连续的.
其它的ColumnC值原先是0,在此基础上加(按照ID的顺序)有没有效率快点的sql语句?希望能在mysql下或者oracle下运行
ID ColumnA ColumnB ColumnC
1 A B 0
2 A B 2
3 A B 04 A C 0
5 A C 1
6 A C 3
7 A C 0我想根据ColumnA和ColumnB进行排序,然后将分组的顺序值插入ColumnC中,
希望最后ColumnC为有序的整数.其中,非0的往前挪,为0的向后靠
希望运行sql之后的值为:ID ColumnA ColumnB ColumnC
1 A B 2
2 A B 1 原先非0,变为1
3 A B 34 A C 3 原先为0,
5 A C 1 原先非0,
6 A C 2 原先非0,往前靠变为2
7 A C 4 原先为0其中ID=2和ID=5,ID=6的记录,其ColumnC值原先不为0,保持原有的顺序,只是去掉其中间隔的数,
变成连续的.
其它的ColumnC值原先是0,在此基础上加(按照ID的顺序)有没有效率快点的sql语句?希望能在mysql下或者oracle下运行
ID Value
1 2
2 1
3 34 3
6 2
7 4
那不会,呵呵
from 表名 order by nullif( - ColumnB,0) descselect * from #b -- 列 col1 為所求的列