我有下表:
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
);