【发布时间】:2016-06-16 15:16:24
【问题描述】:
一个简单的问题:我怎样才能避免错误
不包含在聚合函数或
GROUP BY子句中
我想为每个国家/地区分组。有可能吗?
SELECT country_code AS 'Country', UserInfo.Id
FROM [ip2location].[dbo].[ip2location_db1] as IpRange with(nolock)
JOIN [dbo].[USERINFO] as UserInfo
ON (SELECT dbo.IPAddressToInteger (UserInfo.LastIp)) BETWEEN IpRange.ip_from AND IpRange.ip_to
WHERE
UserInfo.RoomId = 84 AND
country_code != 'UA' AND
country_code != 'BY' AND
country_code != 'KZ' AND
country_code != 'RU'
GROUP BY country_code
【问题讨论】:
-
我想我已经找到了自己问题的答案:根本不要使用 GROUP BY :)
-
当您使用 GROUP BY 时,SQL 服务器使用聚合来为您的 GROUP BY 语句中存在的每个值返回一个值。这意味着,如果您想检索比分组字段和聚合更多的信息,您应该将字段添加到 group by 子句或考虑其他选项(如窗口函数(例如 PARTITION BY COUNTRY_CODE))
标签: sql sql-server group-by aggregation