Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环遍历结果集并在SQL中更改其结果_Sql_Sql Server_Oracle_Oracle10g - Fatal编程技术网

循环遍历结果集并在SQL中更改其结果

循环遍历结果集并在SQL中更改其结果,sql,sql-server,oracle,oracle10g,Sql,Sql Server,Oracle,Oracle10g,我是甲骨文的新手。 有人能告诉我如何实现以下场景吗 我有一个名为table1的表,其ItemID为ItemName。 和另一个具有ItemInventoryID ItemDescription的表清单 我想在select语句期间向表1添加一个临时列“ItemStatus” 并使用ItemID、ItemName和ItemStatus获取最终结果集 像这样的 select ItemID, ItemName, 'False' as ItemStatus from table1; (我希望Ite

我是甲骨文的新手。 有人能告诉我如何实现以下场景吗

我有一个名为table1的表,其ItemID为ItemName。 和另一个具有ItemInventoryID ItemDescription的表清单

我想在select语句期间向表1添加一个临时列“ItemStatus”

并使用ItemID、ItemName和ItemStatus获取最终结果集

像这样的

select ItemID, ItemName, 'False' as ItemStatus   
from table1;
(我希望ItemStatus最初为false。)

在获得输出之前,我需要更新此结果的每一行上的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值,最后得到输出

提前感谢,,
Frank

假设ItemID是表1中的主键,并且它与库存有一对多关系:

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;

查询执行左联接,这意味着无论是否与库存匹配,表1中的行仍然返回。CASE构造完成了临时列的工作

如果您正在学习Oracle,第一步应该是尝试在没有循环的情况下完成所有工作