我是Oracle新手。 任何人都可以建议我如何实现以下场景。
我有一个名为table1的表,ItemID为ItemName。 另一个表库存,ItemInventoryID,ItemDescription
我喜欢在select语句中向table1添加一个临时列“ItemStatus”。
使用ItemID,ItemName,ItemStatus获取最终结果集。
类似这样的事情
select ItemID, ItemName, 'False' as ItemStatus
from table1;
(我最初希望ItemStatus为假。)
我需要在获得输出之前更新此结果的每一行上的ItemStatus列。 基于以下条件。
declare temp Number;
select count(*) INTO temp
from Inverntory
where ItemInventoryID = ItemID ///How do I get this ItemID for every row?
IF(temp>0)
THEN
UPDATE table1
SET ITEMSTATUS = 'True';
END IF;
如何循环遍历
的结果集 select ItemInventoryID, ItemName, 'False' as ItemStatus
from table1;
并根据我的条件更新ItemStatus值,最后得到输出。
先谢谢, 弗兰克
答案 0 :(得分:0)
假设ItemID是table1中的主键,并且它与Inventory具有一对多的关系:
select a.ItemID
,a.ItemName
,case when count(b.ItemInventoryID) = 0 then 'False' else 'True' end as ItemStatus
from table1 a
left join Inventory b on(
b.ItemInventoryID = a.ItemID
)
group
by a.ItemID
,a.ItemName;
查询执行左连接,这意味着无论是否与Inventory匹配,仍会返回table1中的行。 CASE构造,执行临时列所做的操作。