我有下表:
Vehicle_no DEA_id Name location
--------------------------------------------
1030 T100024 xxxxx Canada
1012 T103125 yyyyy America
1045 T100024 xxxxx Canada
我想检索第一行和具有相同经销商ID的行。对于上面的例子,我想得到的结果是row1和row3 ......
我怎么能在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
);