select
pd.state AS StateName,
pd.county AS `County Name`,
CASE pc.close_dt WHEN pc.close_dt >= DATE(NOW() - INTERVAL 3 MONTH)
THEN COUNT(pd.property_id)
ELSE NULL
END AS `3 MONTH`,
CASE pc.close_dt WHEN pc.close_dt >= DATE(NOW() - INTERVAL 6 MONTH)
THEN COUNT(pd.property_id)
ELSE NULL
END AS `6 MONTH`
from resnet.property_details pd
join resnet.property_closings pc
on pd.property_id = pc.Property_id
GROUP BY pd.state,pd.county
我试图从今天开始3个月的时间间隔,从今天起6个月后关闭的房产。
我希望它看起来像这样:
答案 0 :(得分:1)
您需要条件聚合。在MySQL中,您可以这样做:
select pd.state AS StateName, pd.county AS `County Name`,
SUM(pc.close_dt >= CURDATE() - INTERVAL 3 MONTH) AS `3 MONTH`,
SUM(pc.close_dt >= CURDATE() - INTERVAL 6 MONTH) AS `6 MONTH`
from resnet.property_details pd join
resnet.property_closings pc
on pd.property_id = pc.Property_id
group by pd.state, pd.county;
注意:
case
语法没有意义。您有条件(case when <condition>
或常量为case <column> when <value>
)。但不是两个。date(now())
= CURDATE()
。case
表达式,因为MySQL将布尔值视为数字上下文中的整数。你可以简单地总结一下&#34;计算真值的数量。编辑:
如果您想要3-6个月,那么您可以这样做:
SUM(pc.close_dt >= CURDATE() - INTERVAL 6 MONTH AND
pc.close_dt < CURDATE() - INTERVAL 3 MONTH) AS `6 MONTH`