1

我有一个产生几个结果的查询。我已将几列连接为 1 作为 ID。我只想显示 ID 唯一的行。

下图是我的表格的示例:

在此处输入图像描述

如您所见,ID 重复了几次。如何构建查询以仅显示 3 个唯一行?

嵌套此查询并使用distinct(RowID)显示三行但我无法显示其余列?

欢迎任何想法。谢谢!

4

4 回答 4

1

在所有列的选择中使用 distinct

询问:

select distinct RowID, OrderNum, cDescription, Thickness, UllTimberThickness, Width, UllTimberWidth, Length
from YourTable
于 2013-07-18T19:45:23.233 回答
0

使用GROUP BY

SELECT RowID, OrderNum, cDescription, Thickness, etcetera ...
FROM dbo.TableName
GROUP BY RowID, OrderNum, cDescription, Thickness, etcetera ...

( etcetera 是其余列的占位符)

于 2013-07-18T19:42:40.810 回答
0

尝试这个:

SELECT *
FROM mytable t1
WHERE
    (SELECT COUNT(*) FROM mytable t2
    where t2.id = t1.id) = 1

通过这种方式,您可以获得 id 唯一的所有行。我写这个查询是因为我不知道你 ID 的其他字段是否相同,因为你已经用一组信息构建了你的字段。如果所有列对于相同的 id 都是相同的,那么您可以使用 Vasanth Sundaralingam 在他的帖子中建议您的语句 DISTINCT。

于 2013-07-18T19:43:49.310 回答
0

我对“获得三个唯一行的含义”有点困惑。

如果您的意思是唯一的行,请count(*)用作窗口函数:

select *
from (select t.*,
             count(*) over (partition by id) as cnt
      from t
     ) t
where cnt = 1;

如果您的意思是每一行的一个示例,请使用row_number()

select *
from (select t.*,
             row_number(*) over (partition by id order by (select NULL)) as seqnum
      from t
     ) t
where seqnum = 1;
于 2013-07-18T20:03:13.240 回答