【发布时间】:2021-01-27 14:31:23
【问题描述】:
我有一个客户表和一个订单表 在这种情况下,我想要一份关于有多少客户没有下订单的月度报告 像这样 月 非活跃客户数
我写了一个这样的查询:
SELECT Count (distinct Persons.id), Month (Orders.OrderDate) FROM Persons LEFT JOIN Orders ON Persons.id = Orders.Person_id WHERE Orders.Person_id IS NULL; Group By Month (Orders.OrderDate)
由于条件IS NULL,那么Month(OrderDate)的结果也是NULL 我应该如何让月份也显示? 我正在使用 tsql
【问题讨论】:
-
您需要先将
CROSS JOIN添加到日历表中,或者首先将所有相关月份的开始和结束日期的不同列表包含在ON中到您的Orders表中。跨度> -
@Larnu 您好,谢谢您的回复,我正在使用 tsql,可能无法进行交叉连接或者?
-
cross join在 t-sql 中被支持 -
“可能无法进行交叉连接或” 为什么不呢?
CROSS JOIN在您的Persons和 Calendar 对象之间,然后LEFT JOIN到您的Orders表。 -
你有什么尝试吗?
标签: sql sql-server tsql datetime count