DB2 SQL SELECT 加入的前 1 组

DB2 SQL SELECT top 1 group with join

我正在连接到 DB2 数据库并希望使用 Max(PO180M1.POORDT) 或 PO180M2.PHPPN (PARTNO) 的 TOP 1 分组。我该怎么做?我想我一直在接近但没有让它发挥作用。

SELECT PO180M2.PHPPN AS PartNo, (PO180M2.PHVNPD || ' ' || PO180M2.PHVNP2) AS PartDesc, 
       PO180M1.POORDT AS OrderDate, PO180M2.PHUNCT AS UnitCost
FROM PO180M1, PO180M2 
WHERE PO180M1.POORNO = PO180M2.PHORNO 
ORDER BY PartNo, OrderDate DESC

差不多明白了。对于任何聚合,Max()Min()Avg()Count()Sum(),需要一个 GROUP BY 子句列出 "level"通常是指示字段(名称、类别、类型)的列。

此外,您将遗漏一个您试图 运行 聚合的级别列,这里是 POORDT。最后,您将无法 ORDER BY 非常聚合的字段,而只能列出组字段。

SELECT PO180M2.PHPPN AS PartNo, (PO180M2.PHVNPD || ' ' || PO180M2.PHVNP2) AS PartDesc, 
       PO180M2.PHUNCT AS UnitCost, Max(PO180M1.POORDT) As MaxPOORDT
FROM PO180M1 
INNER JOIN PO180M2 ON PO180M1.POORNO = PO180M2.PHORNO 
GROUP BY PO180M2.PHPPN, (PO180M2.PHVNPD || ' ' || PO180M2.PHVNP2), PO180M2.PHUNCT
ORDER BY PartNo

顺便说一下,我注意到您使用了 table 的旧语法,在 FROM 子句中使用 WHERE 子句连接列表 table。我将其更改为带有 ONINNER JOIN,我认为它符合 DB2。