我有一个数据库表,用于存储要在报告上显示的数据。每次将记录插入数据库时,都会添加另一行,但ReportNumber行会递增。我一直在寻找,似乎找不到其他可能会问过这个问题的人。我需要存储过程来获取最新的报告信息(ReportNumber行中的最大数字)。我怎样才能做到这一点?这是一个例子。
Year Data ReportNumber
2014 135 1
2014 135 2
2014 136 1
2014 136 2
当我运行报告时,我只想显示基于ReportNumber的最新数据(本例中为2)
答案 0 :(得分:1)
为什么不使用order by
之类的
select * from
report_table
order by
ReportNumber desc
(OR)
select * from
report_table
where ReportNumber = (select max(ReportNumber) from report_table)
答案 1 :(得分:1)
这样做了吗?
select *
from Table
where ReportNumber in (select max(ReportNumber)
from Table)
答案 2 :(得分:0)
假设我正确理解您的问题,您想要选择具有按年份和数据分组的最大报告编号的行吗?如果是这样,有很多方法。这是一个使用row_number()
:
with cte as (
select t.year,
t.data,
t.reportnumber,
row_number() over (partition by year, data order by reportnumber desc) rn
from yourtable t
)
select *
from cte
where rn = 1
答案 3 :(得分:0)
如果要获取ReportNumber等于表中最大值的所有行:
SELECT yourTable.*
FROM yourTable
CROSS JOIN (SELECT Max(reportNumber) as maxRep)
WHERE yourTable.ReportNumber = maxRep
如果您想为每个数据值获取最新报告:
SELECT yourTable.*
FROM yourTable
CROSS JOIN (
SELECT Data, Max(reportNumber) as maxRep
FROM yourTable
GROUP BY Data) as maxTable
ON yourTable.ReportNumber = MaxTable.maxRep
AND yourTable.Data = MaxTable.Data
答案 4 :(得分:0)
如果您使用的是SQL Server 2005或更高版本,则还可以将TOP
与WITH TIES
选项结合使用。这将选择具有相同(最大,因为排序)ReportNumber的所有记录。
SELECT TOP 1 WITH TIES *
FROM MyTable
ORDER BY ReportNumber DESC