0
我想根据他们的“总部”或“父”位置将许多客户组合在一起。使用CASE语句帮助MySQL查询
这个工作正常,除了我在开发我的系统时并未预见到的缺陷......对于没有“Parent”(独立业务)的客户,我默认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 customer表中BUSINESS_NAME除了当PARENT_ID = 0,那么就使用在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
谢谢...我认为这有效...我现在在c.customer_id列中得到空值,所以我猜它必须是行不能匹配的行...下一个概率,我该怎么做空? – sjw 2010-04-14 07:05:56
我认为'(CASE c.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END)'应该是'(CASE js.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END)'在你的group by子句中。 – davek 2010-04-14 07:08:56
你在哪里得到c.customer_id:我在你的查询中看不到它。 – davek 2010-04-14 07:09:25