如何为每个不同的代码值选择各种项目

时间:2018-04-06 17:08:10

标签: sql-order-by ssms distinct

目前,我正在excel中执行此过程但是需要很长时间才能认为SQL可能提供更有效的替代方案。

表格,投影,是58k行,最初以无意义的方式排序。有18列,但只有两列有任何意义,occ_code和indcode。在excel中,我通过occ_code进行升序排列,然后通过indcode按升序排列该子集。下面给出了预期结果的一个例子。

indcode     occ_code
000000       000000
110000       000000
111000       000000
000000       111011
110000       111011
120000       111011
000000       122011

至于SQL,可以使用以下代码完成。

Select Distinct Occ_code,indcode From dbo.projections
Order by occ_code asc, indcode asc

2 个答案:

答案 0 :(得分:1)

如果您希望在结果中使用indcode,则还必须在您的选择中包含indcode。您编写的查询只会为每个不同的occ_code值提供一行。

答案 1 :(得分:1)

您的代码可以使用:

Select Distinct Occ_code,indcode From dbo.projections Order by occ_code asc, indcode asc

另一种方法是使用允许您使用聚合函数的组:

Select Occ_code, indcode From dbo.projections group by Occ_code, indcode Order by occ_code asc, indcode asc

在这里你可以用count(*)来找到那些没有重复的组合代码:

Select Occ_code, indcode, count(*) From dbo.projections group by Occ_code, indcode having count(*) = 1 Order by occ_code asc, indcode asc