1

我真的在为这里的实现解决方案而苦苦挣扎。

    SELECT 
      mach_id, 
      value1, 
      CASE 
        WHEN value1 = 0 THEN lead(created_on) OVER (ORDER BY mach_id)
      END, 
      created_on
    FROM MyTable
    WHERE 
      field_name='someValue' and 
      CAST(created_on AS DATE) = CAST(GETDATE() AS DATE)

我需要在 value1 为 0 时获取 created_on 日期,然后获取潜在客户记录 created_on 日期。然后获取这些日期并删除另一个表中的所有记录,其中 created_on 在这两个日期之间的 mach_id。

我真的不知所措。有什么建议么?

4

1 回答 1

0

我终于想出了解决方案,我将其发布,希望对其他人有所帮助。感谢大家的意见和建议。

    Delete fe from MySecondTable fe join
(Select * from
    (
        Select mach_id, station_id, 
        lag(value1) over (partition by mach_id order by created_on) as shiftEndValue,
        CASE WHEN value1=0 THEN lag(created_on) over (partition by mach_id order by created_on)
            end as shiftEndTime,
            value1, created_on
            FROM MyFirstTable
            where field_name='cur_trgt_cnt' and CAST(created_on AS DATE) = CAST(GETDATE() AS DATE)
    )a
    where shiftEndTime is not null
)b
on fe.mach_id= b.mach_id and fe.station_id=b.station_id 
where fe.created_on between b.shiftEndTime and b.created_on
于 2018-05-10T02:22:42.360 回答