我的查询目前的结构如下:
Select top 10 ID, CalculatedColumn
From Table
通过将我们加入的表中的某些字段相加来构建计算列。
返回的数据如下所示:
+----------------------------------------------+ | Id Calculated Column | |----------------------------------------------| | 1 10 | | 2 11 | | 3 12 | | 4 13 | | 5 14 | | 6 14 | | 7 14 | | 8 14 | | 9 14 | | 10 14 | +----------------------------------------------+
我想更改查询,因此选择前5行会产生当前结果。也就是说,我想选择前5个不同的计算值。
我遇到的所有示例都涉及选择不同的ID,您可以转换并加入反对值。
有没有办法可以在SQL中执行此操作?
答案 0 :(得分:2)
您可以在计算列上使用RANK function。绑定的计算值将具有相同的等级。
例如:
SELECT Id, ComputedColumn
FROM
(
SELECT Id, ComputedColumn, RANK() OVER (ORDER BY ComputedColumn) Rnk
FROM TableName
) x
WHERE Rnk <= 5
答案 1 :(得分:1)
非常直接的可能性是这样的:
WITH cte AS
(
SELECT TOP 5 CalculatedColumn
FROM Table1
GROUP BY CalculatedColumn
ORDER BY CalculatedColumn
)
SELECT * FROM Table1 t
WHERE EXISTS
(SELECT 1 FROM cte WHERE CalculatedValue = t.CalculatedValue)
ORDER BY CalculatedValue, ID