我的数据看起来像这样
CUSTID POLICY TYPE RANDOMTHING ETC
有时候每个CUSTID会有多个行,否则其他字段会有不同的值。我只希望每个CUSTID返回一行,只取第一行的值(忽略其余的)。
我已尝试将First应用于CUSTID,但它似乎无效。
答案 0 :(得分:1)
我相信你想要像
这样的东西SELECT t1.*
FROM yourTable t1 INNER JOIN
(
SELECT CUSTID, MIN(POLICY) AS MinOfPOLICY
FROM yourTable
GROUP BY CUSTID
) t2 ON t1.CUSTID = t2.CUSTID AND t1.POLICY = t2.MinOfPOLICY
ORDER BY 1
在此示例中,t1
和t2
是表别名。在大多数情况下,在构造多次引用同一个表的查询时,需要使用表别名来消除列引用的歧义。例如,您不能只说CUSTID
,因为它不清楚您是CUSTID
的第一个实例,还是第二个实例的yourTable
。
SQL语言允许通过在表名后面立即放置别名来为表提供别名,因此yourTable t1
表示" yourTable
,使用别名t1
&# 34 ;.另一个别名t2
是GROUP BY
子查询(括号内的子查询)的别名。