我有下表:

Vehicle_no  DEA_id      Name       location
--------------------------------------------
1030        T100024     xxxxx      Canada
1012        T103125     yyyyy      America
1045        T100024     xxxxx      Canada

我想检索第一行和具有相同经销商ID的行。对于上面的示例,我想得到的结果是第1行和第3行…
在SQL Server中如何做到这一点?我试着用同一张桌子左接。但我没有得到我期望的结果。
SELECT  *
FROM ODS.MKT_DEALER_GET AS t1
INNER JOIN
    (SELECT TOP 1 *
     FROM ODS.MKT_DEALER_GET) AS t2 ON t.[DEA_id] = ts.[DEA_id]

请帮我解决这个问题。我的数据库是SQL Server

最佳答案

SQL表表示无序集。要标识“第一”行,需要一列指定顺序。我会用=而不是JOIN来写这个:

SELECT dg.*
FROM ODS.MKT_DEALER_GET dg
WHERE dg.DEA_id = (SELECT TOP 1 dg2.DEA_id
                   FROM ODS.MKT_DEALER_GET dg2
                   ORDER BY ?
                  );

或者,如果您有其他信息,请使用WHERE
SELECT dg.*
FROM ODS.MKT_DEALER_GET dg
WHERE dg.DEA_id = (SELECT TOP 1 dg2.DEA_id
                   FROM ODS.MKT_DEALER_GET dg2
                   WHERE Vehicle_no = 1030
                  );

10-04 15:50