Ниже приведен единый список, в котором указана страна, т. Е. Она не превращает каждую страну в столбец.Чтобы создать каждый столбец, вы должны либо сделать то, что сделал Sticky-Bit, либо вы должны pivot
- в любом случае вам придется обрабатывать каждую страну индивидуально (если вы не строите pivot
с использованием динамического SQL).Но, может быть, вы можете использовать этот список вместо того, чтобы нуждаться в отдельном столбце?
declare @MyTable table ([Date] date, Browser varchar(32), Country varchar(2), [Time] int)
insert into @MyTable ([Date], Browser, Country, [Time])
select '2019-05-06', 'Chrome', 'US', 1000
union all select '2019-05-06', 'Chrome', 'US', 560
union all select '2019-05-07', 'Firefox', 'JP', 2300
union all select '2019-05-07', 'Edge', 'US', 1200
union all select '2019-05-07', 'Chrome', 'JP', 3000
union all select '2019-05-07', 'Chrome', 'JP', 3200
union all select '2019-05-07', 'Chrome', 'JP', 2100
union all select '2019-05-07', 'Firefox', 'US', 2200
select Duration, Country, count(*)
from (
select *
, CASE WHEN [Time] >= 0 AND [Time] < 1000 THEN '0 - 1s'
WHEN [Time] >= 1000 AND [Time] < 2000 THEN '1 - 2s'
WHEN [Time] >= 2000 AND [Time] < 3000 THEN '2 - 3s'
ELSE '+3s' END Duration
, CASE WHEN [Time] >= 0 AND [Time] < 1000 THEN 0
WHEN [Time] >= 1000 AND [Time] < 2000 THEN 1
WHEN [Time] >= 2000 AND [Time] < 3000 THEN 2
ELSE 3 END DurationOrder
from @MyTable
) X
group by Duration, DurationOrder, Country
order by DurationOrder, Country