有多个状态代码订购产品 - 只需要第一次交易各行项目
问题描述:
我有一个包含交易记录订单Oracle表。每个订单(a.SLLITM)上的每个订单项(a.SLLITM)都会经过多个状态点(a.SLLTTR)。我试图捕捉第一个状态 - 状态可能会有所不同。逻辑上我的想法是使用“小时”字段中的最小值。有多个状态代码订购产品 - 只需要第一次交易各行项目
任何帮助将不胜感激!
SELECT
to_char(to_date(a.SLTRDJ +1900000, 'yyyyddd'), 'mm/dd/yyyy') "Order Date",
a.SLDCTO "Order Type",
a.SLDOCO "Order Number",
a.SLLITM "2nd Item Number",
a.SLTORG "Transaction Originator",
substr(TRIM(a.SLKCOO),3,3)||'500' "Branch",
to_char(substr(lpad(to_char(to_number(lpad(a.SLTDAY,6,0),'000000')),6,0),1,2),'00') "Hour",
a.SLFRTH "Ship Via"
FROM PRODDTA.F42199 a
WHERE a.SLDCTO IN ('CS','SO','ST')
AND a.SLLNTY IN ('S','SS')
AND a.SLLTTR IN ('520, '540')
AND a.SLTRDJ > 117050
AND a.SLKCOO IN ('00200', '00600')
答
由于我没有你的表格,我不能在他们身上演示。取而代之的是,这里是一个如何选择,在SCOTT模式(在Oracle安装标准),并在各部门最早HIREDATE员工的工作。
通知的EARLIEST_JOB列中的输出,以及如何聚集函数首先是SELECT子句中用于计算它。
http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions058.htm#SQLRF00641
select e.deptno, d.dname, min(e.hiredate) as earliest_hiredate,
min(e.job) keep (dense_rank first order by e.hiredate) as earliest_job
from emp e join dept d on e.deptno = d.deptno
group by e.deptno, d.dname
;
DEPTNO DNAME EARLIEST_HIREDATE EARLIEST_JOB
------ ---------- ------------------- ------------
10 ACCOUNTING 1981-06-09 00:00:00 MANAGER
20 RESEARCH 1980-12-17 00:00:00 CLERK
30 SALES 1981-02-20 00:00:00 SALESMAN
哪一个是 “小时” 字段(列!),什么是它的数据类型? – mathguy
a.SLTDAY - 这是一个整数 –
洛尔 - **的** HOUR列叫做SLT ** ** DAY和它的数据类型是'NUMBER'。为什么? – mathguy