You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于worker_log日期判断request工单工人可用状态(PostgreSQL)

用LATERAL连接实现工单工人可用状态判断

假设你的表结构大致如下:

  • worker_log:store_id(门店ID)、log_date(日期)、worker_count(当日工人数量)
  • request_log:request_id(工单编号)、request_date(请求日期)、store_id(门店ID)

要生成包含工单信息和工人可用状态的requests表,可以用LATERAL关联子查询实现,它会为request_log的每一行匹配对应门店、对应日期的worker_log记录,进而判断工人是否可用:

CREATE TABLE requests AS
SELECT
    r.request_id,
    r.request_date,
    r.store_id,
    CASE
        WHEN w.worker_count > 0 THEN '可用'
        ELSE '不可用'
    END AS worker_availability
FROM
    request_log r
LEFT JOIN LATERAL (
    SELECT worker_count
    FROM worker_log w
    WHERE w.store_id = r.store_id
      AND w.log_date = r.request_date
) w ON true;

逻辑说明

  • LEFT JOIN LATERAL (...) w ON true:LATERAL子查询会逐个遍历request_log的每一行,根据当前工单的store_id和request_date,精准匹配worker_log中的对应记录。用LEFT JOIN是为了保留所有工单请求——哪怕某个工单对应的日期/门店没有工人日志记录,此时worker_count会是NULL,CASE判断会返回"不可用"。
  • CASE语句:直接根据匹配到的工人数量判断状态,大于0则标记为可用,其余情况(包括无匹配记录)均标记为不可用。

如果只需要保留有工人日志记录的工单,可以把LEFT JOIN换成INNER JOIN,过滤掉无对应工人数据的请求,按需调整即可。

内容的提问来源于stack exchange,提问作者user1893649

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:52:05