简化多个sql查询的不同变量

时间:2014-03-05 15:33:21

标签: sql oracle variables

我正在尝试更好地自动化查询,因此我不必每次都更改表名和where子句。现在这就是我的工作:

2014年,2013年等。我可能会将这些变量放到表格中。也在Oracle上做这个。 颜色:红色,绿色等

    select count(*) from Apples_2014
    where Type = 'Red'
    ;
    select count(*) from Apples_2014
    where Type = 'Green'
    ;
    select count(*) from Apples_2013
    where Type = 'Red'
    ;
    select count(*) from Apples_2013
    where Type = 'Green'
;

有没有更简单的方法来执行此操作,因此我只有一个查询,然后它会多次运行,但使用不同的参数?

通过一些研究,我看到我可以使用&&然后每次在Toad中创建一个弹出窗口。这虽然效率不高,但它有点有效。

1 个答案:

答案 0 :(得分:0)

ADDITION (以下原始回答。看到您对帖子的评论后进行编辑。)

听起来你真的想要分组。

运行如下所示的内容将在一个结果集中同时为所有表和所有值提供计数。

      select count(*) as total, 'TABLENAME' as tablename, value
      from Tablename
      group by value;
      UNION ALL
      select count(*) as total, 'TABLENAME2' as tablename, value
      from Tablename2
      group by value

** * ** * ** * 的** * ** * ** * ** * ** * 的** * ** * **** * 88 原始答案:

您可以在Oracle中使用绑定变量 - 然后它将提示每个值。

select count(*) from TABLE
    where Type = :value

假设您的表结构非常相似,您可以联合并添加一个参数来处理表名更改,而无需切换到使用动态sql(动态sql只是将其写为串联字符串 - 效率不高。)。

所以喜欢这个....

select total
from (
      select count(*) as total, 'TABLENAME' as tablename
      from Tablename
      where type = :value;
      UNION ALL
      select count(*) as total, 'TABLENAME2' as tablename
      from Tablename2
      where type = :value
     ) a
where a.tablename = :tablename