使用CASE语句帮助MySQL Query

时间:2010-04-14 06:56:37

标签: mysql case-statement

我正在尝试根据“总部”或“家长”位置将多个客户聚集在一起。

除了我在开发系统时没有预见到的缺陷之外,这样做没问题......对于没有“父”(独立业务)的客户,我将parent_id默认为0.因此,我的数据看起来像这样:

id  parent_id   customer  
1    0          CustName#1 
2    4          CustName#2 - Melbourne 
3    4          CustName#2 - Sydney 
4    0          CustName#2 (Head Office)

我想要做的是将我的结果组合在一起,以便我有一行用于CustName#1和一行用于CustName#2但是我的问题是没有parent_id = 0的父记录并且这些行被排除在外使用内连接时。

我已尝试使用案例陈述,但这也不起作用(父母仍被忽略)

非常感谢任何帮助。 这是我的查询(我的CASE基本上是在parent_id = 0时基于parent_id EXCEPT从customer表获取business_name,那么只需使用job_summary表中列出的customer_name):

SELECT 
js.month_of_year,
(CASE js.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END) as customer,
SUM(js.jobs), 
SUM(js.total_cost),
sum(js.total_sell)
FROM JOB_SUMMARY js INNER JOIN 
customer c on js.parent_id=c.id
group by 
js.month_of_year,
(CASE c.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END) 
ORDER BY `customer` ASC

1 个答案:

答案 0 :(得分:1)

尝试使用LEFT OUTER JOIN代替INNER JOIN

on js.parent_id=c.id可能会过滤掉没有父母的行。