使用SQL从表中获取单个记录 [英] Fetch single record from a table using SQL

查看:78
本文介绍了使用SQL从表中获取单个记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我正在尝试编写一个能够区分此表记录的查询



没有日期标志

1 2016-10-31 Y

1 2016-11-30 Y

2 2014-10-31 Y

1 2015-10-31 Y

2 2013-10-31 Y

1 2012-10-31 Y

2 2011-10-31 Y

3 2016-08-31 Y

3 2016-01-31 Y

1 2016 -03-31 Y

2 2015-10-31 Y

3 2014-10-31 Y



到这个



没有日期标志

1 2016-11-30 Y

2 2015-10- 31 Y

3 2016-08-31 Y



这里唯一的问题是没有主键存在;我应该在临时表中获取此记录然后尝试?请建议。



提前致谢。



我的尝试:



以上记录我已转入临时表;但之后不知道。

解决方案





在这里尝试使用Row_number。



喜欢这样:



;  WITH  CTE  AS 
SELECT [NO],[ DATE ],FLAG
,ROW_NUMBER() OVER PARTITION BY [NO] ORDER BY [ DATE ] DESC AS ROW_NUM
FROM TABLE_NAME


SELECT [NO ],[ DATE ],FLAG FROM CTE WHERE ROW_NUM = 1 ;


Hi,

I'm trying to write a query which will distinguish records from this table

No Date Flag
1 2016-10-31 Y
1 2016-11-30 Y
2 2014-10-31 Y
1 2015-10-31 Y
2 2013-10-31 Y
1 2012-10-31 Y
2 2011-10-31 Y
3 2016-08-31 Y
3 2016-01-31 Y
1 2016-03-31 Y
2 2015-10-31 Y
3 2014-10-31 Y

to this

No Date Flag
1 2016-11-30 Y
2 2015-10-31 Y
3 2016-08-31 Y

The only problem here is no primary key exists; should I fetch this record in a temp table and then try? Please suggest.

Thanks in advance.

What I have tried:

the above records I've shifted into a temp table; but no idea after that.

解决方案

Hi,

Try using Row_number here.

Like this :

;WITH CTE AS (
SELECT [NO],[DATE],FLAG
 ,ROW_NUMBER() OVER(PARTITION BY [NO] ORDER BY [DATE] DESC) AS ROW_NUM
FROM TABLE_NAME
)

SELECT [NO],[DATE],FLAG FROM CTE WHERE ROW_NUM = 1;


这篇关于使用SQL从表中获取单个记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆