繁体   English   中英

SQL 可以比较同一表中的行,以及动态 select 值吗?

[英]Can SQL Compare rows in same table , and dynamic select value?

最近,我得到了一张名为 Appointments 的表在此处输入图像描述

要求是我需要 select 通过 2 条规则为每个客户仅一行:

如果相同时间和(相同位置或不同位置),请将 null 放在导师和位置上。

如果不同的时间和(相同的位置或不同的位置),选择最小的行。

由于我对 SQL 非常业余,我已经搜索了自加入的方法,但在这种情况下似乎不起作用。

预期结果

在此处输入图像描述

谢谢大家,祝你有美好的一天...

如果有多行并且导师或位置不匹配,您似乎想要每个客户的最短时间, null值。

您可以使用 window 函数:

select customer, starttime,
       (case when min(location) = max(location) then min(location) end) as location,
       (case when min(tutor) = max(tutor) then min(tutor) end) as tutor
from (select t.*, rank() over (partition by customer order by starttime) as seqnum
      from t
     ) t
where seqnum = 1
group by customer, starttime

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM