gpt4 book ai didi

mysql - 使用 Order By 和 Group BY 折叠数据

转载 作者:行者123 更新时间:2023-11-29 12:51:38 25 4
gpt4 key购买 nike

我正在将 mysql 脚本转换为 sql server 脚本。

我想对数据进行排序,然后按某些条件折叠数据。

让我们看下面的例子:

在Mysql中:

sql fiidle

假设我们有表“test”和 3 列(colA、colB 和 colC)

现在我想按 colA 和 colB 对数据进行排序,然后想选择 colA,colB 组的第一行我还想找到 colA,colB 组的 MIN(colC)

我通过以下查询在 mysql 中实现了:

select colA, colB, min(ColC) 
from ( select *
from test
order by colA,colB) tempalias
group by colA, colB

现在我的sql server案例:

当我尝试执行相同的查询时,它给出以下错误:

ORDER BY 子句在 View 、内联函数、派生表、子查询和公用表表达式中无效,除非同时指定了 TOP、OFFSET 或 FOR XML。

任何人都可以帮助我如何在 sql server 中获得与我在 mysql 中所做的相同的功能。

提前致谢..

最佳答案

我认为这应该是诀窍。不知道它是否非常有效,但你可以尝试一下

SELECT t1.cola, t1.colb, t1.colc FROM
(SELECT *, ROW_NUMBER() OVER(ORDER BY cola, colb) AS RowNumber
FROM test) t1
JOIN
(SELECT cola, colb, MIN(RowNumber) AS RowNumber
FROM
(SELECT *, ROW_NUMBER() OVER(ORDER BY cola, colb) AS RowNumber
FROM test) AS SUBQUERY_01
GROUP BY cola, colb) t2
ON t1.cola = t2.cola AND t1.colb = t2.colb AND t1.RowNumber = t2.RowNumber

如果您想按条件更改订单,则必须编辑两个 OVER(ORDER BY cola, colb) 区域

关于mysql - 使用 Order By 和 Group BY 折叠数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24632203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com