Php 使用MSSQL GROUP BY时列过多
如何使用Group By将我的位置列添加到我的查询中,我认为这是一个聚合事件Php 使用MSSQL GROUP BY时列过多,php,sql-server,Php,Sql Server,如何使用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.[a
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
如果您想按位置查看accounts group的聚合,则必须将以下内容添加到查询中
GROUP BY a.Location HAVING sum(a.accounts)
如果您能给出所有列标题的预期输出示例,您可能会得到更好的答案
对于最新的TrxTime,您需要在查询中添加以下行
GROUP BY a.Location HAVING max(a.TrxTime)
尝试使用聚合函数MAX():
选择一个[PlateNo],
a、 [TrxDate]作为日期,
a、 [地点],
a、 [帐户],
最大值(a[TrxTime]),
a、 [味精],,
b、 公司
来自[Mark_Fast].[dbo].[Alarm]a
内部联接[Mark_Fast].[dbo].[account]b在[account]=b.senderno或[account]=b.sim1上
其中a.trxdate介于'09/10/2015'和'09/10/2015'之间,Msg如'%geo%'
和(a.PlateNo='BCY536')
按[PlateNo]、[TrxDate]、[Location]、[account]、[Msg]、[b]公司分组。由于其他列具有不同的数据,因此仅按位置分组将不起作用
因此,您必须添加更多列以唯一地显示记录。
分组依据[Location]、[TrxDate]、[TrxTime]、[Msg]预期输出是什么?您是否尝试在google框中写入“mssql分组依据”并选中第一个条目?此示例输出似乎没有以任何方式分组。您能详细说明一下您想要实现的目标吗?@EvaldasBuinauskas我的预期输出将是1 Loc 1、1 Loc 3和1 Loc 2行。您想用TrxTime
做什么?对于每个Loc,它们中的大多数都是不同的。这不是我需要的。您可以看到预期的输出向上滚动。您的问题不完整,这就是为什么我给了您一个一般性的答复,您可以继续工作。现在我更新了我的答案