好吧,我有兩個表與另一行的數據Postgres的更新列
measures
attr_id, period, net_orders, ref_1 (key = attr_id,period)
和
policy
attr_id, lead_time
我需要做的就是抓住從度量「net_orders」期末(這是一個日期),添加'lead_time'並更新度量表'ref_1',其中period = period + lead
我目前有選擇讓我獲得我需要的數據,但是當我嘗試圖out where子句。
SELECT
m.attr_id,
m.period,
m.net_orders,
p.lead_time,
DATE(m.period) + CAST(p.lead_time as INTEGER) as updateperiod
FROM
measures m
INNER JOIN policy p ON p.attr_id = m.attr_id
我堅持以下一些查詢 - 又名不全
UPDATE
measures m
SET
ref_1 = (SELECT m1.net_orders FROM measures m1
WHERE m1.attr_id = m.attr_id AND m1.period = m.period)
WHERE
attr_id = (SELECT m3.attr_id
FROM measures m3 WHERE m3.attr_id = m.attr_id
AND m3.period = m.period)
AND m.period = (SELECT DATE(m2.period) + CAST(p2.lead_time AS INTEGER)
FROM measures m2 INNER JOIN policy p2 ON p2.attr_id = m2.attr_id
WHERE m2.attr_id = m.attr_id AND m2.period = m.period)
編輯
update measures m
set reference_1 = s.net_orders
from (
select
m.attribute_id, period, net_orders,
DATE(period) + CAST(lead_time as integer) as periodlevel
from
measures m
inner join policies p on p.attribute_id = m.attribute_id
) s
where
m.attribute_id = s.attribute_id
and m.period = s.periodlevel
這是一個已經結束了工作查詢。我的第一個答案出現錯誤,但看起來像現在正在工作!
更新查詢的第一部分起作用。也就是說,如果我放棄在哪裏,它會將當前的net_orders設置爲自己。添加** WHERE **子句返回0行更新 – Scottzozer 2013-05-09 15:25:43