根据两个条件分组,取每组中第一行数,用FIRST和GROUP BY写的,不知道是不是microsoft sql server management studio不识别FIRST,还是我哪里写错了,FIRST那一直报错,应该怎么办?
SELECT ShozokuCD, YakushokuCD,FIRST(ShainCD)AS ShainCD
FROM dbo.V_SEKININSHA GROUP BY ShozokuCD, YakushokuCD
转用 ROW_NUMBER 试试看,先根据分组生成编号,然后再获取编号为1的
SELECT ShozokuCD, YakushokuCD, ShainCD
FROM (
SELECT ShozokuCD, YakushokuCD, ShainCD,
ROW_NUMBER() OVER (PARTITION BY ShozokuCD, YakushokuCD ORDER BY ShainCD) AS rownumber
FROM dbo.V_SEKININSHA
) results
WHERE rownumber = 1;
SQL Server中,FIRST()函数在GROUP BY查询中不被支持
试试
SELECT TOP 1 ShozokuCD, YakushokuCD, ShainCD
FROM dbo.V_SEKININSHA
GROUP BY ShozokuCD, YakushokuCD
不知道你这个问题是否已经解决, 如果还没有解决的话:解决方案:
你可以使用ROW_NUMBER()函数结合OVER()子句来实现在Microsoft SQL Server Management Studio中分组取每组中第一行数据的功能。具体步骤如下:
SELECT
ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY column3) as row_num,
column1,
column2,
column3,
...
FROM table_name
在这个示例中,我们使用了PARTITION BY关键字指定了两个分组条件,使用了ORDER BY关键字指定了按照哪个字段进行排序。ROW_NUMBER()函数会为每个分组中的数据赋一个唯一的序号,所有数据按照指定的排序方式进行排序。
SELECT
column1,
column2,
column3,
...
FROM (
SELECT
ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY column3) as row_num,
column1,
column2,
column3,
...
FROM table_name
) as t
WHERE t.row_num = 1
在这个示例中,我们嵌套了一层SELECT语句,将第一层SELECT语句的结果作为子查询。然后在子查询中,使用ROW_NUMBER()函数为每个分组中的数据赋予唯一的序号,最后在外层SELECT语句中筛选出序号为1的数据,即每个分组中的第一行数据。
以上就是在Microsoft SQL Server Management Studio中分组取每组中第一行数据的解决方案。希望能够帮到你。