GROUP BY SQL 语句中的 Sub SELECT
Sub SELECT within a GROUP BY SQL statement
我有一个 table,我在其中解析了一大堆 VPN 日志。 table 没有主键字段,guid 字段是所有内容的关联方式。我想 select 行按 guid 分组。 运行 组内的子 select 用于特定字符串。不确定这是否有意义,这是查询:
SELECT [guid]
,Max([username]) AS [User]
,MIN([datetime]) AS Minimum
,Max([datetime]) AS Maximum
,DATEDIFF(mi, MIN([datetime]), Max([datetime])) AS "Duration in Minutes"
,(SELECT top 1 [data] FROM [Admin].[dbo].[VPNLogs] WHERE [data] LIKE '%The user was active for%') AS "Data"
FROM [Admin].[dbo].[temp_VPNLogs]
GROUP BY [guid]
ORDER BY "Duration in Minutes" DESC
这很好用,但数据字段的子 select 只是 returns 所有结果的同一行,当我希望它 select 这基于组时经过。每个 VPN 连接条目都有 4 行具有相同的 guid,这就是我按 guid 分组的原因,我想特别 select 每个组都有字符串 "The user was active for" 的数据字段。如果需要进一步说明,请告诉我。
谢谢!
co相关的子查询就是你需要的:
SELECT [guid]
,Max([username]) AS [User]
,MIN([datetime]) AS Minimum
,Max([datetime]) AS Maximum
,DATEDIFF(mi, MIN([datetime]), Max([datetime])) AS "Duration in Minutes"
,(SELECT top 1 [data] FROM [Admin].[dbo].[VPNLogs] V1 WHERE [data] LIKE '%The user was active for%' AND v1.guid = v.guid) AS "Data"
FROM [Admin].[dbo].[temp_VPNLogs] V
GROUP BY [guid]
ORDER BY "Duration in Minutes" DESC
我有一个 table,我在其中解析了一大堆 VPN 日志。 table 没有主键字段,guid 字段是所有内容的关联方式。我想 select 行按 guid 分组。 运行 组内的子 select 用于特定字符串。不确定这是否有意义,这是查询:
SELECT [guid]
,Max([username]) AS [User]
,MIN([datetime]) AS Minimum
,Max([datetime]) AS Maximum
,DATEDIFF(mi, MIN([datetime]), Max([datetime])) AS "Duration in Minutes"
,(SELECT top 1 [data] FROM [Admin].[dbo].[VPNLogs] WHERE [data] LIKE '%The user was active for%') AS "Data"
FROM [Admin].[dbo].[temp_VPNLogs]
GROUP BY [guid]
ORDER BY "Duration in Minutes" DESC
这很好用,但数据字段的子 select 只是 returns 所有结果的同一行,当我希望它 select 这基于组时经过。每个 VPN 连接条目都有 4 行具有相同的 guid,这就是我按 guid 分组的原因,我想特别 select 每个组都有字符串 "The user was active for" 的数据字段。如果需要进一步说明,请告诉我。
谢谢!
co相关的子查询就是你需要的:
SELECT [guid]
,Max([username]) AS [User]
,MIN([datetime]) AS Minimum
,Max([datetime]) AS Maximum
,DATEDIFF(mi, MIN([datetime]), Max([datetime])) AS "Duration in Minutes"
,(SELECT top 1 [data] FROM [Admin].[dbo].[VPNLogs] V1 WHERE [data] LIKE '%The user was active for%' AND v1.guid = v.guid) AS "Data"
FROM [Admin].[dbo].[temp_VPNLogs] V
GROUP BY [guid]
ORDER BY "Duration in Minutes" DESC