2016-03-10 50 views
0

我有一张表,每个月都有客户列出并使用active_indicator。对于每个客户,我想拉动活动指标仅两个月(2014年12月和2015年12月),但是当我编写下面的代码时,我会得到一个表格,其中每个客户列出两次。我知道我可以使用max做另一个步骤来将表格汇总到客户级别,但无论如何要在一个简单的SQL查询中执行此操作?如何在不复制客户的情况下编写此SQL?

select distinct 
    customer 
    ,case when date='2015-12-01' then active_indicator else 0 end as Dec2015_active_ind 
    ,case when date='2014-12-01' then active_indicator else 0 end as Dec2014_active_ind 
from monthly_account_cust 
where date in ('2015-12-01', '2014-12-01') 
order by customer 
+0

使用标记dbms(MySQL或MS SQL Server?)。数据类型为'date'列? – jarlh

+0

除非你聚合这个,否则假设有两行符合日期标准,你将得到两行。 –

回答

5

很确定您正在寻找类似的东西。

select 
    customer 
    , max(case when date = '2015-12-01' then active_indicator else 0 end) as Dec2015_active_ind 
    , max(case when date = '2014-12-01' then active_indicator else 0 end) as Dec2014_active_ind 
from monthly_account_cust 
where date in ('2015-12-01','2014-12-01') 
group by customer 
order by customer 
+0

我确定你是对的! – jarlh

+0

嗯,是的,我应该知道试试这个。谢谢! –

+1

如果这对你有用,那么你应该考虑接受这个答案。 –

相关问题