我有一张包含采购订单的表格:
po_line table
+--------+---------+-----------+
| po_num | po_line | date |
+--------+---------+-----------+
| 1 | 1 | 9/22/2013 |
| 1 | 2 | 9/22/2013 |
| 1 | 3 | 9/22/2013 |
| 2 | 1 | 9/21/2013 |
| 2 | 2 | NULL |
+--------+---------+-----------+
po table
+--------+-----------+
| po_num | confirmed |
+--------+-----------+
| 1 | NULL |
| 2 | NULL |
+--------+-----------+
对于给定的po,示例po_num 1,我想要将表2中的值更新为“已确认”,如果所有记录中都有这些行的日期。示例1将填充确认。 PO 2将不符合标准,因为第2行没有日期。
我需要使用光标来执行此操作吗?运行sql 2008 r2。
答案 0 :(得分:0)
UPDATE po SET confirmed = 'confirmed'
FROM po T
WHERE
NOT T.po_num IN
(
SELECT po_num FROM po_line
WHERE po_date IS NULL
)
答案 1 :(得分:0)
或者,如果您想在确认之前确保po
表中每个po_line
的条目,您可以使用:
update po set confirmed = 'confirmed'
where po.po_num in (select po_num from
(select po_num, count(po_date) dated, count(*) total from po_line group by po_num) q
where dated=total)
所示