gpt4 book ai didi

sql - 获取最后状态

转载 作者:行者123 更新时间:2023-12-05 04:29:40 27 4
gpt4 key购买 nike

我有 table :

enter image description here

我想获取今天的最新状态,前提是如果当前日期没有休假或出差,则应显示“工作”状态。我使用这个查询,但它不正确(有时它显示两个值)

SELECT Name,Status,Start,End
FROM employee as emp
Where Start = (Select max(Start) from employee as emp2 where emp.Name = emp2.Name )
Order by Name

当前结果

Name     Status        Start     End
People-1 Job 2/3/2020 0001-01-01 00:00:00.000
People-1 business trip 4/20/2022 4/22/2022

预期结果:

Name     Status        Start    End
People-1 Job 2/3/2020 0001-01-01 00:00:00.000

最佳答案

要完全理解您想要的行为有点困难,但假设以下内容为真,此 sql 应该可以工作:

  1. 表中有多条'employee'记录
  2. 您需要所有符合以下条件的员工的所有记录
    • 开始日期必须是数据集中的最新日期(这与说开始日期必须等于今天的日期不同)
    • 状态不得为休假或出差。
create temporary table employees (
start date,
name varchar,
status varchar
);

insert into employees (start, name, status) values
('2022-05-03', 'Adam', 'vacation'),
('2022-05-03', 'Bill', 'business_trip'),
('2022-05-05', 'Adam', 'business_trip'),
('2022-05-05', 'Bill', 'Job'),
('2022-05-05', 'Wendy', 'Job');

select * from employees
where start = ( select max(start) from employees) AND
( status != 'vacation' AND status != 'business_trip' );

start | name | status
------------+-------+--------
2022-05-05 | Bill | Job
2022-05-05 | Wendy | Job

虽然它与您发布的内容非常接近,但我不太确定为什么您共享的数据集会得到多个结果。我会回去仔细检查您的数据集并确认您共享的 sql 查询是实际上是您用来生成输出的那个。

希望对您有所帮助或至少提供一些灵感来解决您的问题。

关于sql - 获取最后状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72255301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com