1

我有看起来像这样的数据

CUSTID     POLICY     TYPE   RANDOMTHING   ETC

有时每个 CUSTID 会有多行,否则其余字段的值不同。我只想为每个 CUSTID 返回一行,只取第一行的值(忽略其余的)。

我尝试将 First 应用到 CUSTID,但它似乎不起作用。

4

1 回答 1

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

在此示例中,t1t2是表别名。在大多数情况下,当构造一个多次引用同一个表的查询时,需要表别名来消除列引用的歧义。例如,您不能只说CUSTID是因为不清楚您是指CUSTID来自 的第一个实例yourTable还是来自第二个实例。

SQL 语言允许通过将别名紧跟在表名之后来为表赋予别名,因此yourTable t1 意味着“ yourTable,使用别名t1”。另一个别名t2GROUP BY子查询的别名(括号内的那个)。

于 2013-04-12T19:32:37.363 回答