选择与where子句和最近日期不同的

问题描述 投票:0回答:5

我有一个表,我需要找到不同的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我无法做我想要的。

sql sql-server
5个回答
1
投票

您可以使用qazxsw poi为每一行分配一个数字,该数字为所有row_number()的最大qazxsw poi,并对其进行过滤。

date

1
投票

试试这个:

arm

0
投票

您可以使用此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,则将返回多行。


0
投票

您可以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

0
投票

我不确定你是否想要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 <>小提琴,表明这完全符合您在问题中指定的内容(好吧,它返回完整行,而不仅仅是两列)。

© www.soinside.com 2019 - 2024. All rights reserved.