Sql独特顶部
我有一个查询,当前的结构如下:Sql独特顶部,sql,sql-server-2008,Sql,Sql Server 2008,我有一个查询,当前的结构如下: Select top 10 ID, CalculatedColumn From Table 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 Calcul
Select top 10 ID, CalculatedColumn
From Table
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
计算列是通过在我们连接到的表中添加一些字段来构建的
返回的数据如下所示:
+----------------------------------------------+
| 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,您可以根据vs.值进行转换和连接
在SQL中有什么方法可以做到这一点吗?一个非常简单的可能性是:
Select top 10 ID, CalculatedColumn
From Table
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
一个非常简单的可能性如下:
Select top 10 ID, CalculatedColumn
From Table
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
一个非常简单的可能性如下:
Select top 10 ID, CalculatedColumn
From Table
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
一个非常简单的可能性如下:
Select top 10 ID, CalculatedColumn
From Table
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
您可以在计算列上使用。将具有相同等级的计算值
例如:
SELECT Id, ComputedColumn
FROM
(
SELECT Id, ComputedColumn, RANK() OVER (ORDER BY ComputedColumn) Rnk
FROM TableName
) x
WHERE Rnk <= 5
您可以在计算列上使用。将具有相同等级的计算值
例如:
SELECT Id, ComputedColumn
FROM
(
SELECT Id, ComputedColumn, RANK() OVER (ORDER BY ComputedColumn) Rnk
FROM TableName
) x
WHERE Rnk <= 5
您可以在计算列上使用。将具有相同等级的计算值
例如:
SELECT Id, ComputedColumn
FROM
(
SELECT Id, ComputedColumn, RANK() OVER (ORDER BY ComputedColumn) Rnk
FROM TableName
) x
WHERE Rnk <= 5
您可以在计算列上使用。将具有相同等级的计算值
例如:
SELECT Id, ComputedColumn
FROM
(
SELECT Id, ComputedColumn, RANK() OVER (ORDER BY ComputedColumn) Rnk
FROM TableName
) x
WHERE Rnk <= 5