【问题标题】:PLSQL Procedure to iterate through SELECT statement and extract columns values [closed]PLSQL过程遍历SELECT语句并提取列值[关闭]
【发布时间】:2021-12-03 18:50:09
【问题描述】:

我有以下查询(结果附在屏幕截图中):

SELECT make, year, color, count(*) 
FROM cars
GROUPY BY make, year, color
ORDER BY 4 DESC;

我想遍历结果表并为每行中的条件生成子查询(下面的示例)。我希望然后使用这些子查询来制作一个包含满足原始表中每一行标准的样本结果的表。

这似乎是一个奇怪的或不必要的请求,但这是为了便于阅读而简化的示例。这是我想根据自己的推理采取的方法,因为我想要一个可以返回并更改以供将来使用和不同查询变体的解决方案。

SELECT * from cars 
WHERE make = 'Jeep'
AND  year = '2019'
AND color = 'Black';


SELECT * from cars 
WHERE make = 'Ford'
AND year = '2018'
AND color = 'Red';

【问题讨论】:

  • 你的第一个查询会给你一个错误
  • 您不需要任何子查询或迭代,使用方便的方法:在匹配列上连接两个表。检查the documentation 的语法和examples
  • 我不明白你想要达到什么目的。您是否只想从表中选择样本数据,例如每个品牌、年份和颜色一行?这可以通过一个相当简单的查询来完成。您的第一个查询缺少 GROUP BY 子句,因此无效。如果您添加该子句,您将获得计数。但是您似乎不想使用计数。然后你说你想构建单个查询,但最后听起来这也不是你真正想要的。我的意思是:请描述您最终想要实现的目标,而不是询问可能与此无关的事情。
  • “我有以下查询(结果附在屏幕截图中):” 不,你没有。该查询不会通过解析阶段。请阅读并注意stackoverflow.com/help/minimal-reproducible-example

标签: sql oracle plsql procedure


【解决方案1】:

您可以像这样准备字符串并稍后运行它们

select 'select * from cars where make = ''' || make || ''' and year = ''' || year || ''' and color = ''' || color || ''';' 
from cars

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2021-02-14
    • 2021-06-30
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    相关资源
    最近更新 更多