sql - 使用参数调用函数或 View

标签 sql windows postgresql

我想创建函数或 View ,每月显示特定年份的一些信息。

CREATE OR REPLACE VIEW name_view AS 
    SELECT d_name,
    SUM("Jan") "Jan",
    SUM("Feb") "Feb"
    ...
    FROM (
    select distinct d_name,
      COUNT(CASE WHEN EXTRACT (MONTH FROM h_date) = '01' THEN query_string ELSE NULL END) "Jan",
      COUNT(CASE WHEN EXTRACT (MONTH FROM h_date) = '02' THEN query_string ELSE NULL END) "Feb",
    ..
       from h
           inner join d on h_d = d_id
                WHERE EXTRACT (YEAR FROM h_date) = '2015' 
            GROUP BY  d_name) sub query
    GROUP BY d_name

如果没有

,我怎么能这样调用 View 呢?

WHERE EXTRACT (YEAR FROM h_date) = '2015'

但与通话年份有关?例如

SELECT * FROM name_view ('2015')

最佳答案

您应该在 SELECT 中使用 YEAR,当您从您使用 WHERE year = 2015 的 View 中进行 SELECT 时。

CREATE OR REPLACE VIEW name_view AS 
SELECT d_name,
SUM("Jan") "Jan",
SUM("Feb") "Feb",
YEAR,
....

View 的使用:

SELECT * 
FROM name_view 
WHERE year = '2015';

关于sql - 使用参数调用函数或 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211090/

相关文章:

c - 访问dll中的全局变量

php - 在 PHP 中组合 sql 查询

windows - TObject 虚拟方法的签名更新到 Delphi XE2

sql - 存储过程中一列上的两个可选参数

windows - 如何使用/安装 GNU binutils (objdump)

sql - 为 Postgres 中的竞赛存储 'Rank'

sql - 如何更好的优化SQL查询?

ruby-on-rails - 当前日期之后没有关联记录的最早日期

mysql - 不小心指定了奇怪的 sql 查询。发生了什么?

mysql - 两个值desc之间的sql查询