我有看起来像这样的数据
CUSTID POLICY TYPE RANDOMTHING ETC
有时每个 CUSTID 会有多行,否则其余字段的值不同。我只想为每个 CUSTID 返回一行,只取第一行的值(忽略其余的)。
我尝试将 First 应用到 CUSTID,但它似乎不起作用。
我有看起来像这样的数据
CUSTID POLICY TYPE RANDOMTHING ETC
有时每个 CUSTID 会有多行,否则其余字段的值不同。我只想为每个 CUSTID 返回一行,只取第一行的值(忽略其余的)。
我尝试将 First 应用到 CUSTID,但它似乎不起作用。
我相信你想要类似的东西
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
”。另一个别名t2
是GROUP BY
子查询的别名(括号内的那个)。