解决方案 »
- oracle 序列,是否有更改START WITH 的语句
- 挑战一下你的SQL水平
- 如何取的F45RUN32.EXE后面的启动参数?
- oracle修改表中记录时出的错误
- oracle权限问题
- net服务名的配置的问题
- 请问哪里有oracle9i for Linux的版本下载
- 如何得到long raw字段,所包含内容的字节数
- Oracle连接数查看的问题!
- 搭建数仓抽取数据过程中,kettle提示表空间不足,请问怎么解决?中途停止建立的数据文件,offline drop后并手动删除了dbf文件后会有什么影响?
- truncate table 之后,可以恢复数据吗
- ORA-00936: 缺失表达式错误,大牛帮忙看看
A1 在用 2 001
A1 停用 1 002
那么结果是什么?我在此假设结果是
A1 在用 1 001
通过以下语句可以达到楼主需求--WLH物料号 ZT使用状态 SL使用数量 LSH流水号
with t as (
select 'A1' WLH, '在用' ZT, 1 SL, '001' LSH from dual union
select 'A2', '在用', 1, '001' from dual union
select 'A3', '在用', 1, '001' from dual union
select 'A1', '停用', 1, '002' from dual union
select 'A3', '停用', 1, '003' from dual union
select 'A1', '在用', 1, '003' from dual union
select 'A4', '在用', 1, '003' from dual )
--上面是测试模拟数据,使用时不要引用
SELECT *
FROM
(SELECT WM_CONCAT(WLH),SUM(XJ)
FROM (SELECT WLH,SUM(SL * DECODE(ZT,'在用',1,-1)) XJ FROM T GROUP BY WLH)
WHERE XJ > 0),
(SELECT MAX(LSH) FROM T);
SELECT *
FROM
(SELECT WM_CONCAT(WLH),SUM(XJ),MAX(MLSH)
FROM (SELECT WLH,SUM(SL * DECODE(ZT,'在用',1,-1)) XJ,MAX(LSH) MLSH FROM T GROUP BY WLH)
WHERE XJ > 0);
SQL> WITH t AS (
2 SELECT 'A1' materiel_no, '在用' status, 1 amount, '001' seq FROM DUAL UNION ALL
3 SELECT 'A2', '在用', 1, '001' FROM DUAL UNION ALL
4 SELECT 'A3', '在用', 1, '001' FROM DUAL UNION ALL
5 SELECT 'A1', '停用', 1, '002' FROM DUAL UNION ALL
6 SELECT 'A3', '停用', 1, '003' FROM DUAL UNION ALL
7 SELECT 'A1', '在用', 1, '003' FROM DUAL UNION ALL
8 SELECT 'A4', '在用', 1, '003' FROM DUAL
9 )
10 SELECT SUBSTR(SYS_CONNECT_BY_PATH(n.materiel_no, ','), 2) materiel_no,
11 n.status,
12 n.amount,
13 n.seq
14 FROM (SELECT m.materiel_no,
15 m.status,
16 SUM(m.amount) OVER() amount,
17 m.seq,
18 ROWNUM rowno
19 FROM (SELECT t.*,
20 ROW_NUMBER() OVER(PARTITION BY t.materiel_no ORDER BY t.seq DESC) rn
21 FROM t) m
22 WHERE m.rn = 1
23 AND m.status = '在用') n
24 WHERE CONNECT_BY_ISLEAF = 1
25 START WITH n.rowno = 1
26 CONNECT BY PRIOR n.rowno = n.rowno - 1
27 AND PRIOR n.status = n.status
28 ;MATERIEL_NO STATUS AMOUNT SEQ
-------------------------------------------------------------------------------- ------ ---------- ---
A1,A2,A4 在用 3 003