【发布时间】:2012-02-27 15:05:43
【问题描述】:
我目前正在编写一个 SQL 视图,它应该提供特定月份的填充字段的计数。
这就是我希望构建视图的方式:
Country | (Current Month - 12) Eg Feb 2011 | (Current Month - 11) | (Current Month - 10)
----------|----------------------------------|----------------------|---------------------
UK | 10 | 11 | 23
月份下的数字应该是特定国家/地区所有填充字段的计数。该字段名为 eldate,是格式为 10-12-2011 的日期(转换为字符)。我希望计数只计算与月份匹配的日期。
因此,“当前月份 - 12”列应仅包含当前 12 个月之前的月份内的日期计数。例如,当前月份 - 英国的 12 应该包括在 2011 年 2 月之间的日期计数。
我希望列标题实际反映它所查看的月份:
Country | Feb 2011 | March 2011 | April 2011
--------|----------|------------|------------
UK | 4 | 12 | 0
比如:
SELECT c.country_name,
(SELECT COUNT("C1".eldate) FROM "C1" WHERE "C1".eldate LIKE %NOW()-12 Months% AS NOW() - 12 Months
(SELECT COUNT("C1".eldate) FROM "C1" WHERE "C1".eldate LIKE %NOW()-11 Months% AS NOW() - 11 Months
FROM country AS c
INNER JOIN "site" AS s using (country_id)
INNER JOIN "subject_C1" AS "C1" ON "s"."site_id" = "C1"."site_id"
显然这不起作用,只是为了让您了解我的意思。
有什么想法吗?
感谢您的帮助,如有更多疑问请咨询。
【问题讨论】:
-
我不知道您是否可以使用视图来实现这一点,但您可以使用函数。注意在 PostgreSQL 中你可以调用这样的函数:
SELECT * FROM funName() -
是的,我认为这可能是这样,但是,我是一个新手,不知道如何构建一个函数来做到这一点
标签: sql postgresql relational-database