【发布时间】:2014-09-15 18:30:27
【问题描述】:
我有一个如下表,并希望通过查询为我提供一个新列:第一个站点。 表:
--------------------------------------------------------------
Serial_No | Production_Date | Production_Site | First_Site
--------------------------------------------------------------
001 | 11 June 2013 | SiteA | SiteA
--------------------------------------------------------------
001 | 12 June 2013 | SiteB | SiteA
--------------------------------------------------------------
001 | 12 June 2013 | SiteC | SiteA
--------------------------------------------------------------
001 | 10 June 2013 | SiteA | SiteA
--------------------------------------------------------------
002 | 14 July 2013 | SiteB | SiteA
--------------------------------------------------------------
002 | 14 July 2013 | SiteC | SiteA
--------------------------------------------------------------
002 | 9 May 2013 | SiteA | SiteA
--------------------------------------------------------------
003 | 5 June 2013 | SiteB | SiteB
--------------------------------------------------------------
003 | 19 July 2013 | SiteC | SiteB
--------------------------------------------------------------
First_Site 列读取每个序列号,找到该序列号的最早生产日期,并输出对应于最早日期的站点。
我尝试了以下查询,但他们没有给我想要的结果:
SELECT
Case When ( Production_Date ) = ( MIN( Production_Date )
OVER (PARTITION BY ( Serial_No)) )
Then (Production_Site) Else 'Null') End AS First_Site
FROM Table
这为每个序列号的 Production_Date 最小的行提供了正确的值,但为序列号的其他行提供了空值:
--------------------------------------------------------------
Serial_No | Production_Date | Production_Site | First_Site
--------------------------------------------------------------
001 | 11 June 2013 | SiteA | Null
--------------------------------------------------------------
001 | 12 June 2013 | SiteB | Null
--------------------------------------------------------------
001 | 12 June 2013 | SiteC | Null
--------------------------------------------------------------
001 | 10 June 2013 | SiteA | SiteA
--------------------------------------------------------------
002 | 14 July 2013 | SiteB | Null
--------------------------------------------------------------
002 | 14 July 2013 | SiteC | Null
--------------------------------------------------------------
002 | 9 May 2013 | SiteA | SiteA
--------------------------------------------------------------
003 | 5 June 2013 | SiteB | SiteB
--------------------------------------------------------------
003 | 19 July 2013 | SiteC | Null
--------------------------------------------------------------
这不是我想要的。我的猜测是我必须更改案例陈述的 ELSE 部分。有人可以帮忙吗?
【问题讨论】:
-
您使用的是哪个 DBMS?甲骨文? Postgres?
-
我正在使用 Oracle DBMS