对于以下数据,对于相同的实体和别名,我只想选择具有最大BatchID的那些
Entity Alias Par BatchID
35273 1186944 375000 2019022201464730000 -> I want this selected
35273 1186944 375000 2019022123151930000 -> I want this selected
35273 167 27203051 2019022201464730000
35273 167 20669929 2019022223351340000 -> I want this selected
35273 1949586 650000 2019022123151930000
35273 1949586 650000 2019022201464730000 -> I want this selected
35273 25255 18700 2019022123151930000 -> I want this selected
35273 25255 10700 2019022123151930000 -> I want this selected
这就是我想要的结果:
Entity Alias Par BatchID
35273 1186944 375000 2019022201464730000
35273 1186944 375000 2019022123151930000
35273 167 20669929 2019022223351340000
35273 1949586 650000 2019022201464730000
35273 25255 18700 2019022123151930000
35273 25255 10700 2019022123151930000
以下查询返回所有记录(而不是仅6条)。
以下查询的结果:“最新”的所有记录均返回1
select * from
(select DENSE_RANK() over (partition by ENTITY,ALIAS order by batchid desc)
as latest,*
from test) x
where latest =1
如何创建查询以仅选择那些具有最大BatchID的查询?
编辑: 这是桌子
CREATE TABLE [Test](
[Entity] [varchar](50) NOT NULL,
[Alias] [varchar](50) NOT NULL,
[Par] [bigint] NOT NULL,
[BatchID] [varchar](50) NOT NULL
) ON [PRIMARY]
即使该查询返回“最新”的全部1,
select DENSE_RANK() over (partition by ENTITY_ID,SECURITY_ALIAS order by
batchid desc) as latest,*
from test
谢谢。
答案 0 :(得分:0)
尝试以下查询。 从TABLE_NAME中选择Entity,Alias,Par,MAX(BatchID)
答案 1 :(得分:0)
这有点猜测,但是您的表将这些列定义为字符串:
[Entity] [varchar](50) NOT NULL,
[Alias] [varchar](50) NOT NULL,
我认为您在字符串中隐藏了字符。
有两种找到它们的方法:
select entity
from test
where try_convert(int, entity) is null and entity is not null;
或:
select alias
from test
where alias like '%[^0-9]%'
我的猜测是,您将找到隐藏的字符,这将解释为什么密集列始终为“ 1”的原因。您的分区没有合并看起来像entity
/ alias
对的分区,因为看不见的字符意味着这对不同。
答案 2 :(得分:0)
我不确定您所期望的结果,但是您可以尝试以下方法:
Select Entity, Alias, max(BatchID)
FROM test T1
GROUP BY Entity, Alias
--HAVING COUNT(Entity) > 1 comment out this one if you want > 1 count rows