我有一个表,我需要找到不同的ARM字段值和STK各自,其中DATE是最新的,STK大于1.也就是说,如果最近的负面我不再希望你显示。
表格如下:
Table MOV
Id ARM STK DATE
b3c842e3 F4 230 23-03-2019 00:00:00
b3c842e4 P8 832 24-03-2019 00:00:00
b32d4211 F4 -30 21-03-2019 00:00:00
6hhd421q F4 100 26-03-2019 00:00:00
kih3221a P8 -12 25-03-2019 00:00:00
我想要的结果是:
ARM STK
F4 100
我试图使用SELECT DISTINCT
但由于WHERE
我无法做我想要的。
您可以使用qazxsw poi为每一行分配一个数字,该数字为所有row_number()
的最大qazxsw poi,并对其进行过滤。
date
试试这个:
arm
您可以使用此SQL来获取您想要的结果。
SELECT x.id,
x.arm,
x.stk,
x.date
FROM (SELECT t.id,
t.arm,
t.stk,
t.date,
row_number() OVER (PARTITION BY arm
ORDER BY date DESC)
FROM elbal t
WHERE t.stk > 1) x
WHERE x.rn = 1;
但请注意,如果多个记录具有相同的DATE,则将返回多行。
您可以select top 1 arm, stk
from mov
where stk > 1
group by arm,STK
order by max(date) desc
获取每个select t1.ARM,t1.STK from MOV t1
join (select Date=MAX(DATE) from MOV where STK > 1) T2 on t1.Date = T2.Date
的所有最大日期,然后加入表group by arm
并拒绝条件arm
不适用的所有行。
mov
见stk > 1
。
结果:
select
m.arm, m.stk
from mov m inner join (
select arm, max(date) date
from mov
group by arm
) g on g.arm = m.arm and g.date = m.date
where m.stk > 1
我不确定你是否想要demo的最新价值:
> arm | stk
> :-- | --:
> F4 | 100
或者,如果您想要stk > 1
的最新值具有select top (1) m.*
from mov m
where m.stk > 1
order by m.date desc;
的行。如果这是你想要的,那么:
ARM
这两个都返回您指定的一行。
stk > 1
是一个db <>小提琴,表明这完全符合您在问题中指定的内容(好吧,它返回完整行,而不仅仅是两列)。