Php 使用MSSQL 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

如何使用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

如果您想按位置查看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,它们中的大多数都是不同的。这不是我需要的。您可以看到预期的输出向上滚动。您的问题不完整,这就是为什么我给了您一个一般性的答复,您可以继续工作。现在我更新了我的答案