仅获得最大值,尽管其中=非最大值

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

我将仅获得最大值,尽管其中=而不是最大值,这是我的桌子:

|---------------------|------------------|
|       JAMINAN       |         ID       |
|---------------------|------------------|
|       20210101      |      A0317010    |
|---------------------|------------------|
|       20200101      |      A0317010    |
|---------------------|------------------|

这是我获得最大价值的代码

SELECT MAX(CONVERT(CHAR(12),a.akhir_jaminan,112)) AS ID,  
    a.kode_aparat AS ID
FROM mps_ms_history_jaminan_aparat a 
WHERE a.kode_aparat = 'A0317010'
GROUP BY a.kode_aparat

这是结果:

|---------------------|------------------|
|       JAMINAN       |         ID       |
|---------------------|------------------|
|       20210101      |      A0317010    |
|---------------------|------------------|

如果函数WHERE akhir_jaminan = not max,结果为NULL数据,这是我的代码:

SELECT MAX(CONVERT(CHAR(12),a.akhir_jaminan,112)) AS jaminan,  
    a.kode_aparat AS id
FROM mps_ms_history_jaminan_aparat a 
WHERE a.kode_aparat = 'A0317010' AND CONVERT(CHAR(6),a.akhir_jaminan,112) = '202001' 
GROUP BY a.kode_aparat
|---------------------|------------------|
|       JAMINAN       |         ID       |
|---------------------|------------------|
|       20200101      |      A0317010    |
|---------------------|------------------|

我将得到这样的结果

|---------------------|------------------|
|       JAMINAN       |         ID       |
|---------------------|------------------|
|       NULL          |      NULL        |
|---------------------|------------------|
sql sql-server database
1个回答
0
投票
如果我没记错的话,您想要显示的是最新日期,如果不是最新的日期,它将向用户显示null。

SELECT CASE WHEN MAX(CONVERT(CHAR(12),a.akhir_jaminan,112)) = '20200101' THEN a.akhir_jaminan ELSE NULL END AS jaminan, CASE WHEN a.kode_aparat = 'A0317010' THEN a.kode_aparat ELSE null END AS id FROM mps_ms_history_jaminan_aparat a GROUP BY a.akhir_jaminan, a.kode_aparat

这是使用

CASE子句,使脚本能够确定最新日期是否为所需日期。如果不是所需的脚本,您可以在下面评论,我将尽快修改脚本。

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