| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
-
- SELECT
- t1.pono AS 采购合同号,
- t2.sono AS 销售合同号,
- t1.foursname AS 我方,
- t2.ctname AS 客户,
- t1.stockname AS 仓库名称,
- t1.sdesc AS 中文品名,
- t1.arrDt AS 到港时间,
- pp.dPort AS 目的港,
- pp.chnShipName AS 船名,
- t1.ut AS 单位,
- t1.total_qty AS 库存量,
- ABS(nvl(t2.total_qty_out, 0)) AS 出库量,
- ABS(nvl(t3.total_qty_in, 0)) AS 入库量,
- t1.poamt AS 采购金额,
- t1.soamt AS 销售金额,
-
- pp.create_by_name AS 制单人代码
- FROM (
- SELECT
- IFNULL(b.pono, '') AS pono,
- a.foursname,
- b.ctname,
- b.stockname,
- b.sdesc,
- b.ut,
- b.fcat,
- b.qty,
- b.poamt,
- b.soamt,
- b.sono,
- b.id,
- b.create_by,
- a.arrDt,
- -- 计算该合同的总数量
- SUM(nvl(b.fcat, 0) * nvl(b.qty, 0)) OVER (PARTITION BY IFNULL(b.pono, '')) AS total_qty,
- -- 为每个合同的行编号,取第一条
- ROW_NUMBER() OVER (PARTITION BY IFNULL(b.pono, '') ORDER BY b.id) AS rn
- FROM mdkcdtl b
- LEFT JOIN mdkcctrl a ON a.id = b.rid
- WHERE a.placed = '2'
- AND IFNULL(a.del_flag, 0) <> 1
- AND IFNULL(b.del_flag, 0) <> 1
- AND a.fmodalid NOT IN ('922', '923')
- ) t1
- LEFT JOIN (
- SELECT
- b.ctname as ctname,
- b.sono as sono,
- IFNULL(b.pono, '') AS pono,
- -- 计算fcat=-1的总数量
- SUM(nvl(b.fcat, 0) * nvl(b.qty, 0)) AS total_qty_out,
- -- 统计fcat=-1的记录数
- COUNT(*) AS count_minus1
- FROM mdkcdtl b
- LEFT JOIN mdkcctrl a ON a.id = b.rid
- WHERE a.placed = '2'
- AND b.fcat = '-1'
- AND IFNULL(a.del_flag, 0) <> 1
- AND IFNULL(b.del_flag, 0) <> 1
- AND a.fmodalid NOT IN ('922', '923')
- GROUP BY IFNULL(b.pono, ''),b.ctname,b.sono
- ) t2 ON t1.pono = t2.pono
- LEFT JOIN (
- SELECT
- IFNULL(b.pono, '') AS pono,
- -- 计算fcat=-1的总数量
- SUM(nvl(b.fcat, 0) * nvl(b.qty, 0)) AS total_qty_in,
- -- 统计fcat=-1的记录数
- COUNT(*) AS count_minus1
- FROM mdkcdtl b
- LEFT JOIN mdkcctrl a ON a.id = b.rid
- WHERE a.placed = '2'
- AND b.fcat = '1'
- AND IFNULL(a.del_flag, 0) <> 1
- AND IFNULL(b.del_flag, 0) <> 1
- AND a.fmodalid NOT IN ('922', '923')
- GROUP BY IFNULL(b.pono, '')
- ) t3 ON t1.pono = t3.pono
- LEFT JOIN (
- SELECT
- a1.pono,
- a1.dPort,
- a1.chnShipName,
- a1.totalQty,
- a1.create_by_name
- -- a2.sdesc
- FROM purchaseOrder a1
- -- LEFT JOIN pOrderDtl a2 ON a1.id = a2.rid
- WHERE IFNULL(a1.del_flag, 0) <> 1
- -- AND IFNULL(a2.del_flag, 0) <> 1
- AND a1.placed = '2'
- ) pp
- ON t1.pono = pp.pono
- WHERE t1.rn = 1 -- 只取每个合同的第一行
- AND t1.stockname <> '直运库'
- ORDER BY t1.pono;
|