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