首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >包括oracle sql中未列出月份

包括oracle sql中未列出月份
EN

Stack Overflow用户
提问于 2017-03-06 02:04:02
回答 1查看 44关注 0票数 0

我有两个表,我正在查找另一个表中具有外键的记录的数量,并按日期对它们进行分组。对于某些月份,我们没有记录,但我希望包括那些值为0的月份,表示该月没有任何记录。

我的SQL代码是这样的:

代码语言:javascript
复制
SELECT count(*),
       TO_CHAR("TransactionDate",'MONTH')
FROM "Transaction"
WHERE "Type" IN
    (SELECT "TypeID"
     FROM "TYPE_OF_PRODUCT")
GROUP BY TO_CHAR("TransactionDate",'MONTH') ;

我目前的结果如下:

我目前的结果如下:

EN

回答 1

Stack Overflow用户

发布于 2017-03-06 02:07:39

您可以使用connect by生成所有月份,并使用它进行左连接查询:

代码语言:javascript
复制
select c.Mon,
    coalesce(t.cnt, 0) cnt
from (
    select to_char(add_months(sysdate, level), 'MONTH') Mon
    from dual connect by level <= 12
    ) c
left join (
    select count(*) cnt,
        TO_CHAR("TransactionDate", 'MONTH') Mon
    from "Transaction"
    where "Type" in (
            select "TypeID"
            from "TYPE_OF_PRODUCT"
            )
    group by TO_CHAR("TransactionDate", 'MONTH')
    ) t
    on c.Mon = t.Mon;

另外,顺便说一句,在标识符中使用"也不是一个好的做法。使用不带双引号的简单标识符。

引用自官方网站- https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements008.htm

Oracle非引号标识符不能是

数据库保留字。带引号的标识符可以是保留字,但不建议这样做。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42611988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档