使用双左连接更新组

时间:2014-11-17 09:43:55

标签: sql sql-server

所以我有一个特定的选择,它已经向我显示了我需要知道的数据。 它包含一组by和2个交叉连接。表" Projekt"是所有项目的表格,表格#34; Bestellung"可以包含该项目的几个订单,表" Lieferung"可以包含一个订单的多个交货。我需要在表格中找到最后一个日期" Lieferung并将其放入表格#34; Projekt"中。这是显示项目最后一次交付的最大日期的选择。

SELECT  Projekt.ProjNr, MAX(Lieferung.LSDatum) AS Expr1
FROM    Lieferung RIGHT OUTER JOIN
                     Bestellung ON Lieferung.BestellNr = Bestellung.BestellNr RIGHT OUTER JOIN
                     Projekt ON Bestellung.VorgangsNr = Projekt.ProjNr
GROUP BY Projekt.ProjNr

我现在需要用maxdate更新项目表,我已经读过你不能在更新查询中使用group by,我怎么能实现呢?

1 个答案:

答案 0 :(得分:1)

但是,您可以使用子查询加入目标更新表:

UPDATE P
SET
 <updateField> = Expr1
FROM Projekt P
INNER JOIN (
    SELECT  Projekt.ProjNr, MAX(Lieferung.LSDatum) AS Expr1
    FROM    Lieferung RIGHT OUTER JOIN
                         Bestellung ON Lieferung.BestellNr = Bestellung.BestellNr RIGHT OUTER JOIN
                         Projekt ON Bestellung.VorgangsNr = Projekt.ProjNr
    GROUP BY Projekt.ProjNr
) P1 ON
    P.ProjNr = P1.ProjNr