現有數據如下:
NAME STORAGE_LIFE QTY MAKE_DATE SPECW SPECL LOT_NO BARCODE CDAY
AA 24 1 2007/9/2 105 20 79127004 A0005 2007.11.13
AA 24 1 2007/12/1 105 20 7$067008 A0005 2008.06.28
AA 24 1 2007/9/2 110 20 79127004 A0005 2007.11.29
AA 24 1 2007/9/2 110 20 79127004 A0005 2007.12.19
AA 24 1 2008/2/1 110 20 82137006 A0005 2008.07.23
AA 24 2 2008/1/1 130 20 81217004 A0005 2008.07.11
AA 24 2 2008/6/1 130 20 86144701 A0005 2008.09.09
AA 24 1 2007/9/2 170 20 79127004 A0005 2007.12.15
AA 24 1 2007/10/1 170 20 7$112204 A0005 2008.01.09我想要得到相同的規格(specw,specl)分組后日期(cday)最大的一條記錄這樣的SQL不用row_number() over()函數怎樣寫?要寫報表,因為Report Builder版本低不支持這個分析函數
NAME STORAGE_LIFE QTY MAKE_DATE SPECW SPECL LOT_NO BARCODE CDAY
AA 24 1 2007/9/2 105 20 79127004 A0005 2007.11.13
AA 24 1 2007/12/1 105 20 7$067008 A0005 2008.06.28
AA 24 1 2007/9/2 110 20 79127004 A0005 2007.11.29
AA 24 1 2007/9/2 110 20 79127004 A0005 2007.12.19
AA 24 1 2008/2/1 110 20 82137006 A0005 2008.07.23
AA 24 2 2008/1/1 130 20 81217004 A0005 2008.07.11
AA 24 2 2008/6/1 130 20 86144701 A0005 2008.09.09
AA 24 1 2007/9/2 170 20 79127004 A0005 2007.12.15
AA 24 1 2007/10/1 170 20 7$112204 A0005 2008.01.09我想要得到相同的規格(specw,specl)分組后日期(cday)最大的一條記錄這樣的SQL不用row_number() over()函數怎樣寫?要寫報表,因為Report Builder版本低不支持這個分析函數
解决方案 »
- 我下载了ODAC 11.2 Release 5,想使用Oracle Provider for OLE DB 进行数据库的连接等操作,但是不知引用那个dll文件
- 编写存储过程或触发器,完成以下要求:
- 怎么commit或 rollback v$transaction里的某个事物
- oracle 系统数据文件迁移
- 奇怪的问题,关于类型NVARCHAR2
- 无法登录OMS的问题,请高手指教?
- 如果客户端程序不进行任何操作,能否在数据库中设置一个值将会话断开
- 如何才知道一个表是否存在在数据库里?
- 建表错误?
- centos6.5下安装oracle11g,没有orainstRoot.sh
- 问一下,oracle job 自动工作,要启动哪些服务
- windows XP安装ORALCE 9I出错
group by specw,specl
(select specw a1,specl a2,max(cday) a3 from test order by specw,specl group by specw,specl) tab,test b
where tab.a1=b.specw and tab.a2=b.specl and tab.a3=b.cday
;
SELECT select specw,specl,cday from 表
group by specw,specl having CDAY in(select max CDAY from 表)
group by specw,specl having CDAY in(select max(CDAY) from 表)
SQL> select * from t;NAME STORAGE_LIFE QTY MAKE_DATE SPECW SPECL LOT_NO BARCODE CDAY
-------------------- --------------------------------------- --------------------------------------- ------------------------------------------------------------ --------------------------------------- --------------------------------------- ---------------------------------------- ---------------------------------------- -----------
aa 24 1 2007/9/2 105 20 111111 A0005 11/13/07
bb 24 1 2007/9/2 105 20 111111 A0005 11/10/07
cc 24 1 2007/9/2 88 18 111111 A0005 9/10/07
dd 20 1 2007/9/2 88 18 111111 A0005 8/10/07SQL>
SQL> select * from t a where not exists (
2 select 1 from t b where (b.SPECW=a.SPECW and b.SPECL=a.SPECL) and b.cday>a.cday
3 );NAME STORAGE_LIFE QTY MAKE_DATE SPECW SPECL LOT_NO BARCODE CDAY
-------------------- --------------------------------------- --------------------------------------- ------------------------------------------------------------ --------------------------------------- --------------------------------------- ---------------------------------------- ---------------------------------------- -----------
aa 24 1 2007/9/2 105 20 111111 A0005 11/13/07
cc 24 1 2007/9/2 88 18 111111 A0005 9/10/07