首页 新闻 赞助 找找看

SQL 查询问题

0
悬赏园豆:5 [已解决问题] 解决于 2011-04-19 10:38

不罗嗦直接看数据:

A

1

1

2

4

在A的后面再添加一列Num排名,根据A的值来确定Num

A         Num

1            1

1            1

2            2

4            3

like%'远远'%的主页 like%'远远'% | 小虾三级 | 园豆:635
提问于:2011-04-18 15:16
< >
分享
最佳答案
0

用一个简单的dense_Rank()函数即可

------分组显示示例
IF NOT OBJECT_ID('[XXX]') IS NULL
DROP TABLE [XXX]
GO
CREATE TABLE [XXX](
[TID] int)
go

INSERT [XXX]
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 4

GO

----select * from XXX
/*

TID
1
1
2
4
*/

select TID,(dense_Rank() over (order by TID asc)) as num
from xxx

/*
TID num
1 1
1 1
2 2
4 3
*/

收获园豆:5
邀月 | 高人七级 |园豆:25475 | 2011-04-18 17:04
顶,我一般就使用 Row_number 了
小小刀 | 园豆:1991 (小虾三级) | 2011-04-18 17:12
确实很不错
like%'远远'% | 园豆:635 (小虾三级) | 2011-04-19 10:55
其他回答(7)
0

num的公式是??

写代码的小2B | 园豆:4371 (老鸟四级) | 2011-04-18 15:23
不是,数据中没有这一列,也不是公式
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2011-04-18 15:50
0

distinct    order by

软冰 | 园豆:145 (初学一级) | 2011-04-18 15:24
这样更不行
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2011-04-18 15:50
0

select case A when A的值 then  NUM

                  when A的值 then  NUM

                  end

from 表名    

千枫 | 园豆:213 (菜鸟二级) | 2011-04-18 15:26
如果有163行,那会不会要写163个 when呢,况且这列也不能确定,即不是提前预知的
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2011-04-18 15:53
这是我查询的语句,有点雷人
select row_number() over(order by Month_Rating desc) as 'Row_Id',*
from (select distinct a.SUP_MANAGE_ID,b.SUP_NAME,(select CAST(SUM(SUP_ASSESS_POINT)/COUNT(0) as numeric(5,2))
from ASSESS_SUP_CLOSE_POINT where SUP_MANAGE_ID=a.SUP_MANAGE_ID and ORGANISE_ID='YFJC00' and YEAR_MONTH_STR between '201001' and '201003') as 'Month_Rating'
from ASSESS_SUP_CLOSE_POINT a inner join SUP_INFO b on a.SUP_MANAGE_ID=b.SUP_MANAGE_ID where ORGANISE_ID='YFJC00' and YEAR_MONTH_STR between '201001' and '201003') a
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2011-04-18 15:55
添加一列num排序,根据'Month_Rating' 来填充num,
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2011-04-18 15:58
0

你的意思是这个num跟列A的值完全一样?

顾晓北 | 园豆:10844 (专家六级) | 2011-04-18 15:43
不是一样的,更row_number() over(order by...) 有的一样,但是不完全一样,也就是说num 是根据A列的值来排序的
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2011-04-18 15:54
明白你的意思了,就是同行中A列值的排序数,是么?
没深入研究过Sql,找高手吧。
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2011-04-18 16:04
算了我已经在后台给处理了
dt.Columns.Add("SUP_ASSESS_ORDER_NO", typeof(int));
int tmpInt = 1;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i == 0)
{
dt.Rows[i]["SUP_ASSESS_ORDER_NO"] = tmpInt;//默认第一行给1
}
else
{
if (dt.Rows[i]["SUP_ASSESS_ORDER_NO"].ToString() != dt.Rows[i - 1]["SUP_ASSESS_ORDER_NO"].ToString())//当前一行与上一行的比较,如果不等,则 +1
{
tmpInt++;
}
dt.Rows[i]["SUP_ASSESS_ORDER_NO"] = tmpInt;
}
}
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2011-04-18 16:15
呵呵,想法不错。。。
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2011-04-18 16:34
0

select a.A,b.Num from Tb  a inner join (select row_number() over  (order by A) as Num,A from tb group by A) as b on a.A = b.A

小小刀 | 园豆:1991 (小虾三级) | 2011-04-18 17:07
0

 select *  from (select row_number() over  (order by A) as Num,*  from tableName) as tt

avic_ren | 园豆:373 (菜鸟二级) | 2011-04-18 17:26
0

select  Table1.A, temp_table1.Expr1  from (
SELECT     A, row_number() over (ORDER BY A)  AS Expr1
FROM         (SELECT DISTINCT A
                       FROM          Table1
                       ) AS derivedtbl_1 ) temp_table1 join   Table1
on temp_table1.A=Table1.A

MingQ | 园豆:312 (菜鸟二级) | 2011-04-19 11:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册