2015-09-21 2 views
0

Как использовать Группа к моему РАСПОЛОЖЕНИЕ столбец по моему запросу, который имеет, я думаю, совокупность вещей?Использовать MSSQL GROUP BY со слишком большим количеством столбцов

SELECT a.[PlateNo] 
,a.[TrxDate] as DATES 
,a.[Location] ,a.[account] 
,a.[TrxTime] 
,a.[Msg] 
,b.company FROM [Mark_Fast].[dbo].[Alarm] a 
inner join [Mark_Fast].[dbo].[account] b 
on a.[account] = b.senderno or a.[account] = b.sim1 
where a.trxdate BETWEEN '09/10/2015' AND '09/10/2015' and Msg LIKE '%geo%' 
and (a.PlateNo = 'BCY536') ORDER BY Location desc 

Выход образца:

PlateNo Dates Location account TrxTime   Msg    company 
123  9/9/1999 Loc 1  321  02:39:00 Geozone Exit Alert! Transpartner Trucking Services 
123  9/9/1999 Loc 1  321  02:39:00 Geozone Exit Alert! Transpartner Trucking Services 
123  9/9/1999 Loc 1  321  02:31:00 Geozone Entry Alert! Transpartner Trucking Services 
123  9/9/1999 Loc 3  321  02:32:00 Geozone Exit Alert! Transpartner Trucking Services 
123  9/9/1999 Loc 3  321  02:33:00 Geozone Exit Alert! Transpartner Trucking Services 
123  9/9/1999 Loc 1  321  02:34:00 Geozone Entry Alert! Transpartner Trucking Services 
123  9/9/1999 Loc 2  321  02:35:00 Geozone Exit Alert! Transpartner Trucking Services 
123  9/9/1999 Loc 2  321  02:37:00 Geozone Entry Alert! Transpartner Trucking Services 

Я хочу выход быть группы по Место но я не знаю, как выполнить его в своем запросе. Что я пытаюсь добиться, чтобы иметь выход, который выглядит следующим образом:

PlateNo Dates Location account TrxTime   Msg    company 
     123  9/9/1999 Loc 1  321  02:39:00 Geozone Exit Alert! Transpartner Trucking Services 
     123  9/9/1999 Loc 2  321  02:39:00 Geozone Exit Alert! Transpartner Trucking Services 
     123  9/9/1999 Loc 3  321  02:31:00 Geozone Exit Alert! Transpartner Trucking Services 
+0

Что ожидается выход? –

+0

Вы пробовали написать «mssql group by» в окне google и проверить первую запись? – Amarnasan

+0

Этот образец вывода никоим образом не сгруппирован. Не могли бы вы рассказать о том, чего вы пытаетесь достичь? – Mureinik

ответ

0

Если вы хотите увидеть совокупность группы счетов по местоположению вы должны добавить следующие строки в запросе.

GROUP BY a.Location HAVING sum(a.accounts) 

Если вы можете дать образец ожидаемого результата со всеми головами столбцов, вы можете получить лучший ответ.

Для последней TrxTime вам необходимо добавить следующие строки в запросе

GROUP BY a.Location HAVING max(a.TrxTime) 
+0

Это не то, что мне нужно, вы можете увидеть ожидаемый вывод прокрутки вверх. –

+0

Ваш вопрос был неполным, поэтому я дал вам общий ответ, над которым вы можете работать. Теперь я обновил свой ответ –

0

пытаются использовать агрегатную функцию MAX():

SELECT a.[PlateNo], a.[TrxDate] as DATES, a.[Location], a.[account], MAX(a.[TrxTime]), a.[Msg], b.company FROM [Mark_Fast].[dbo].[Alarm] a INNER JOIN [Mark_Fast].[dbo].[account] b ON a.[account] = b.senderno or a.[account] = b.sim1 WHERE a.trxdate BETWEEN '09/10/2015' AND '09/10/2015' AND Msg LIKE '%geo%' AND (a.PlateNo = 'BCY536') GROUP BY a.[PlateNo],a.[TrxDate],a.[Location],a.[account],a.[Msg],b.company

0

Группировка только по местоположению не будет, потому что другие столбцы имеют разные данные.

Поэтому вам нужно будет добавить больше столбцов, чтобы показать записи однозначно. GROUP BY [Location], [TrxDate], [TrxTime], [Msg]

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