imp系统运维用到的sql文件版本仓库
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. SELECT
  2. t1.pono AS 采购合同号,
  3. t2.sono AS 销售合同号,
  4. t1.foursname AS 我方,
  5. t2.ctname AS 客户,
  6. t1.stockname AS 仓库名称,
  7. t1.sdesc AS 中文品名,
  8. t1.arrDt AS 到港时间,
  9. pp.dPort AS 目的港,
  10. pp.chnShipName AS 船名,
  11. t1.ut AS 单位,
  12. t1.total_qty AS 库存量,
  13. ABS(nvl(t2.total_qty_out, 0)) AS 出库量,
  14. ABS(nvl(t3.total_qty_in, 0)) AS 入库量,
  15. t1.poamt AS 采购金额,
  16. t1.soamt AS 销售金额,
  17. pp.create_by_name AS 制单人代码
  18. FROM (
  19. SELECT
  20. IFNULL(b.pono, '') AS pono,
  21. a.foursname,
  22. b.ctname,
  23. b.stockname,
  24. b.sdesc,
  25. b.ut,
  26. b.fcat,
  27. b.qty,
  28. b.poamt,
  29. b.soamt,
  30. b.sono,
  31. b.id,
  32. b.create_by,
  33. a.arrDt,
  34. -- 计算该合同的总数量
  35. SUM(nvl(b.fcat, 0) * nvl(b.qty, 0)) OVER (PARTITION BY IFNULL(b.pono, '')) AS total_qty,
  36. -- 为每个合同的行编号,取第一条
  37. ROW_NUMBER() OVER (PARTITION BY IFNULL(b.pono, '') ORDER BY b.id) AS rn
  38. FROM mdkcdtl b
  39. LEFT JOIN mdkcctrl a ON a.id = b.rid
  40. WHERE a.placed = '2'
  41. AND IFNULL(a.del_flag, 0) <> 1
  42. AND IFNULL(b.del_flag, 0) <> 1
  43. AND a.fmodalid NOT IN ('922', '923')
  44. ) t1
  45. LEFT JOIN (
  46. SELECT
  47. b.ctname as ctname,
  48. b.sono as sono,
  49. IFNULL(b.pono, '') AS pono,
  50. -- 计算fcat=-1的总数量
  51. SUM(nvl(b.fcat, 0) * nvl(b.qty, 0)) AS total_qty_out,
  52. -- 统计fcat=-1的记录数
  53. COUNT(*) AS count_minus1
  54. FROM mdkcdtl b
  55. LEFT JOIN mdkcctrl a ON a.id = b.rid
  56. WHERE a.placed = '2'
  57. AND b.fcat = '-1'
  58. AND IFNULL(a.del_flag, 0) <> 1
  59. AND IFNULL(b.del_flag, 0) <> 1
  60. AND a.fmodalid NOT IN ('922', '923')
  61. GROUP BY IFNULL(b.pono, ''),b.ctname,b.sono
  62. ) t2 ON t1.pono = t2.pono
  63. LEFT JOIN (
  64. SELECT
  65. IFNULL(b.pono, '') AS pono,
  66. -- 计算fcat=-1的总数量
  67. SUM(nvl(b.fcat, 0) * nvl(b.qty, 0)) AS total_qty_in,
  68. -- 统计fcat=-1的记录数
  69. COUNT(*) AS count_minus1
  70. FROM mdkcdtl b
  71. LEFT JOIN mdkcctrl a ON a.id = b.rid
  72. WHERE a.placed = '2'
  73. AND b.fcat = '1'
  74. AND IFNULL(a.del_flag, 0) <> 1
  75. AND IFNULL(b.del_flag, 0) <> 1
  76. AND a.fmodalid NOT IN ('922', '923')
  77. GROUP BY IFNULL(b.pono, '')
  78. ) t3 ON t1.pono = t3.pono
  79. LEFT JOIN (
  80. SELECT
  81. a1.pono,
  82. a1.dPort,
  83. a1.chnShipName,
  84. a1.totalQty,
  85. a1.create_by_name
  86. -- a2.sdesc
  87. FROM purchaseOrder a1
  88. -- LEFT JOIN pOrderDtl a2 ON a1.id = a2.rid
  89. WHERE IFNULL(a1.del_flag, 0) <> 1
  90. -- AND IFNULL(a2.del_flag, 0) <> 1
  91. AND a1.placed = '2'
  92. ) pp
  93. ON t1.pono = pp.pono
  94. WHERE t1.rn = 1 -- 只取每个合同的第一行
  95. AND t1.stockname <> '直运库'
  96. ORDER BY t1.pono;