为了账号安全,请及时绑定邮箱和手机立即绑定

SQL 查询问题

SQL 查询问题

呼如林 2018-12-06 21:20:29
不罗嗦直接看数据: A 1 1 2 4 在A的后面再添加一列Num排名,根据A的值来确定Num A         Num 1            1 1            1 2            2 4            3
查看完整描述

17 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

添加一列num排序,根据'Month_Rating' 来填充num,
查看完整回答
反对 回复 2019-01-21
?
千万里不及你

TA贡献1784条经验 获得超9个赞

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

查看完整回答
反对 回复 2019-01-21
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

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

查看完整回答
反对 回复 2019-01-21
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-01-21
?
Helenr

TA贡献1780条经验 获得超4个赞

呵呵,想法不错。。。
查看完整回答
反对 回复 2019-01-21
?
智慧大石

TA贡献1946条经验 获得超3个赞

算了我已经在后台给处理了
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;
}
}
查看完整回答
反对 回复 2019-01-21
?
HUWWW

TA贡献1874条经验 获得超12个赞

明白你的意思了,就是同行中A列值的排序数,是么?
没深入研究过Sql,找高手吧。
查看完整回答
反对 回复 2019-01-21
?
手掌心

TA贡献1942条经验 获得超3个赞

不是一样的,更row_number() over(order by...) 有的一样,但是不完全一样,也就是说num 是根据A列的值来排序的
查看完整回答
反对 回复 2019-01-21
?
GCT1015

TA贡献1827条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-01-21
?
达令说

TA贡献1821条经验 获得超6个赞

用一个简单的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
*/
查看完整回答
反对 回复 2019-01-21
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

这是我查询的语句,有点雷人
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
查看完整回答
反对 回复 2019-01-21
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

如果有163行,那会不会要写163个 when呢,况且这列也不能确定,即不是提前预知的
查看完整回答
反对 回复 2019-01-21
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

select case A when A的值 then  NUM

                  when A的值 then  NUM

                  end

from 表名    

查看完整回答
反对 回复 2019-01-21
?
青春有我

TA贡献1784条经验 获得超8个赞

这样更不行
查看完整回答
反对 回复 2019-01-21
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

distinct    order by

查看完整回答
反对 回复 2019-01-21
?
慕容森

TA贡献1853条经验 获得超18个赞

不是,数据中没有这一列,也不是公式
查看完整回答
反对 回复 2019-01-21
?
森栏

TA贡献1810条经验 获得超5个赞

num的公式是??

查看完整回答
反对 回复 2019-01-21
  • 17 回答
  • 0 关注
  • 534 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信