根据应用需要,需要在Power Pivot报告中执行以下任务。 (不在SQL中)。
我在一个表中有两个日期列
列听到:
/* Column Heads :*/ Activity| City | Start_Date | End_Date
/* Row 1 :*/ A1 | C1 | 01/01/2014 | 05/01/2014
/* Row 2 :*/ A1 | C1 | 06/01/2014 | 07/01/2014
/* Row 3 : */ A2 | C2 | 06/01/2014 | 07/01/2014
/* Row 4 : */ A3 | C3 | 03/01/2014 | 04/01/2014
预期输出如 - 如果用户选择日期范围02/01/2014至07/01/2014
列标题
City | #StartCount| #EndCount
C1 | 1 | 2
C2 | 1 | 1
C3 | 1 | 1
此处#StartCount
是
此处#EndCount
是
请你建议我用这种情况表达。 可以使用计算的度量或dax ..
答案 0 :(得分:0)
我可以匹配您的示例数据的唯一方法是忽略您问题中的“不同活动”要求,因为城市C1
只有活动A1
,但最终结果计为2。 / p>
我也可能做了很多可能错误的假设,因为你的样本数据非常有限。但这是我的尝试:
declare @Activities table (Activity char(2),City char(2),Start_Date date,End_Date date)
insert into @Activities (Activity,City,Start_Date,End_Date) values
('A1','C1','20140101','20140105'),
('A1','C1','20140106','20140107'),
('A2','C2','20140106','20140107'),
('A3','C3','20140103','20140104')
declare @Start date
declare @End date
select @Start = '20140102', @End = '20140107'
select City,
SUM(CASE WHEN Start_Date < @Start THEN 0 ELSE 1 END) as StartCount,
SUM(CASE WHEN End_Date > @End THEN 0 ELSE 1 END) as EndCount
from @Activities where Start_Date < @End and End_Date > @Start
group by City
(其中一些依赖于SQL Server语法,但由于您没有使用数据库系统标记您的问题,我可以选择)
答案 1 :(得分:0)
SQL Server
语法
select activity, city,
SUM(case when (startdate >= '2014/01/02' and startdate <= '2014/01/07') then 1 else 0 End) as IsStart,
SUM(case when (enddate >= '2014/01/02' and enddate <='2014/01/07') then 1 else 0 End) as IsEnd
from temp
Group by activity, city