[英]How to get Min(some column value) with primary key ID and max(some column value) with primary key ID with in a single query or nested query in SQL
我需要获得两个单独的列的最小值和最大值,以及它们唯一的主键ID值。
有人愿意帮助我吗? 提前致谢!
select ID as ID, min(FROMTIME) as FROMTIME,ID as ID,max(TOTIME) as TOTIME,sum(DIFFERENCE_TIME) as DIFFERENCE_TIME from (
select PersonalBevorzugteArbeitszeiten.PersonalBevorzugteArbeitszeitID ID, zeitvon FROMTIME ,ZeitBis TOTIME,DATEDIFF(SECOND,zeitvon,zeitbis) as DIFFERENCE_TIME from PersonalBevorzugteArbeitszeiten join personal on personal.PersonalNr = PersonalBevorzugteArbeitszeiten.PersonalNr where personal.PersonalNr = 5 ) as a group by ID
您可以在子查询中使用窗口函数来获取两列的相关顺序,然后从中进行选择。
with rns as (
select pk, col1, col2,
ROW_NUMBER() over (order by col1 desc) rn_max,
ROW_NUMBER() over (order by col2 asc) rn_min
)
select pk,
case when rn_max = 1 then col1 else col2 end as val,
case when rn_max = 1 then 'MAX' else 'MIN' end as max_min
from rns
where rn_max = 1 or rn_min = 1
然后您可以在其中使用RANK()或ROW_NUMBER(),具体取决于您要如何处理具有相同值的多个pk( SQL RANK()与ROW_NUMBER() )
考虑一个具有3列(PID,Price1,Price2)的表,其中PID是主键
最小值:
1)从TableName中选择PID,Price1,其中Price1 =(从TableName中选择MIN(Price1))
2)从TableName的价格1中选择价格最高的1个PID,价格1
最大值:
1)从TableName中选择PID,Price2,其中Price2 =(从TableName中选择MAX(Price2))
2)按Price2 desc从TableName顺序中选择前1个PID,Price2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.