J C*_*per 2 sql sql-server sql-server-2005 gaps-and-islands
我正在使用SQL Server 2005.
关于坏桌设计,请看这篇文章的结尾.
我有两列.我想按照第二列的顺序在第一列分组.微软文档声明GROUP BY子句不关心顺序,我该如何强制执行?
这是我的伪查询:
SELECT col_1,
MIN(col_2),
MAX(col_2)
FROM someTable
GROUP BY col_1 (*** WITH RESPECT TO ORDER OF col_2***)
Run Code Online (Sandbox Code Playgroud)
如果我在下表中运行查询:
Col_1 Col_2
A 1
A 2
A 3
B 4
C 5
C 6
B 7
A 9
Run Code Online (Sandbox Code Playgroud)
我应该得到以下结果:
Col_1 Min Max
A 1 3
B 4 4
C 5 6
B 7 7
A 9 9
Run Code Online (Sandbox Code Playgroud)
关键部分是我不能在结果集中将A的所有4条记录集中在一起.当查询表/子查询时,它按col_2排序,col_1的每个新实例都应该导致新的分组.谢谢,我找不到任何相关内容.
我可以做NOTHING与表的设计.这是一个由外部供应商创建的表,该表与其专有软件一起使用.我再说一遍,我对表设计无能为力!!!!
;WITH T
AS (SELECT Col1,
Col2,
DENSE_RANK() OVER (ORDER BY Col2) -
DENSE_RANK() OVER (PARTITION BY Col1 ORDER BY Col2) AS G
FROM YourTable)
SELECT Col1,
MIN(Col2) AS [Min],
Max(Col2) AS [Max]
FROM T
GROUP BY Col1,
G
ORDER BY [Min]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2999 次 |
最近记录: |