2015-09-09 2 views
-4

Я использую SQL Server 2008 и у меня есть база данных с этой таблицей:Запрос данных в SQL Server

http://prntscr.com/8ei758

enter image description here

Можете ли вы помочь мне возвращаемые данные запроса, как это:

enter image description here http://prntscr.com/8ei6v4

Это изменение НЕ м OP
Посмотрите, как хочет группы по Дата, Источник
И сумма в день

+5

Этот вопрос не показывает никаких исследований. –

+0

Пожалуйста, объясните ** на простом английском языке, что вы пытаетесь сделать - не просто сбрасывайте два скриншота на нас и давайте ** угадываем **, что вы хотите ...... пожалуйста, прочитайте [Как сделать спросите ** хороший вопрос?] (http://stackoverflow.com/help/how-to-ask) –

+0

Это выглядит как супер простой запрос. Почему бы вам не попробовать и посмотреть, где вы. Вот подсказка ... вам нужно выражение case для каждого столбца (iOS, Android, WinPhone). –

ответ

2

Это не совсем понятно, что вы пытаетесь сделать здесь, но я выстрелил в него. Я не вводил все ваши данные образца, но это должно показать вам, как вы можете это сделать.

if OBJECT_ID('tempdb..#Something') is not null 
drop table #Something 

create table #Something 
(
    ReportDate date 
    , TotalAmount int 
    , Source varchar(25) 
    , Platform varchar(25) 
) 

insert #Something 
select '2015-09-01', 120000, 'SmartLink', 'iOS' union all 
select '2015-09-01', 204000, 'GooglePlay', 'WinPhone' union all 
select '2015-09-01', 135000, 'Apple', 'iOS' union all 
select '2015-09-02', 50000, 'GooglePlay', 'Android' union all 
select '2015-09-02', 40000, 'Apple', 'iOS' union all 
select '2015-09-03', 30000, 'GooglePlay', 'Android' union all 
select '2015-09-03', 250000, 'GooglePlay', 'WinPhone'; 

with SubTotals as 
(
    select ReportDate 
     , case when GROUPING(Source) = 1 then 'Total' else Source end as Source 
     , cast(SUM(case when Platform = 'iOS' then TotalAmount else 0 end)/1000. as numeric(9,3)) as iOS 
     , cast(SUM(case when Platform = 'Android' then TotalAmount else 0 end)/1000. as numeric(9,3)) as Android 
     , cast(SUM(case when Platform = 'WinPhone' then TotalAmount else 0 end)/1000. as numeric(9,3)) as WinPhone 
     , GROUPING(Source) as SortOrder 
    from #Something 
    group by ReportDate 
     , Source 
    WITH rollup 
) 

select ReportDate 
    , Source 
    , iOS 
    , Android 
    , WinPhone 
    , iOS + Android + WinPhone as RowTotal 
from SubTotals 
where ReportDate is not null 
order by ReportDate, SortOrder, Source desc 
+0

Спасибо Шон Ланге! Большой! – mrTom

+0

Самое главное, вы это понимаете? –

+0

Да! Я понимаю! Спасибо вам! – mrTom

Смежные вопросы