Nếu tôi hiểu đúng yêu cầu của bạn, thì week_switch
của bạn hàng kết quả chỉ phụ thuộc vào sản phẩm của bạn, không phụ thuộc vào dấu thời gian của nó.
Vì vậy, hãy tính nó trong một truy vấn con.
SELECT product,
(CASE
WHEN MIN(plan_week) <> MAX(plan_week) THEN 'yes'
ELSE 'no' END) AS week_switch
FROM operations
GROUP BY product
Sau đó THAM GIA truy vấn con đó đến thông tin chi tiết của bạn ( fiddle ).
WITH switched AS (
SELECT product,
CASE
WHEN MIN(plan_week) <> MAX(plan_week) THEN 'yes'
ELSE 'no' END AS week_switch
FROM operations
GROUP BY product
)
SELECT
operations.time_stamp,
operations.product,
operations.plan_week,
switched.week_switch
FROM operations
LEFT JOIN switched ON operations.product = switched.product
WHERE time_stamp in ('2020-01-01', '2020-03-15')
GROUP BY 1,2;