交易共同.sql 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. DROP TABLE IF EXISTS temp_dx_main;
  2. DROP TABLE IF EXISTS temp_dx;
  3. DROP TABLE IF EXISTS temp_dx1;
  4. DROP TABLE IF EXISTS temp_dx2;
  5. DROP TABLE IF EXISTS temp_gx;
  6. DROP TABLE IF EXISTS temp_gx_ls;
  7. DROP TABLE IF EXISTS temp_yh;
  8. DROP TABLE IF EXISTS temp_tel;
  9. DROP TABLE IF EXISTS temp_gx2;
  10. DROP TABLE IF EXISTS temp_clean_dx;
  11. DROP TABLE IF EXISTS temp_clean_gx;
  12. CREATE
  13. TEMPORARY TABLE `temp_clean_dx`( `id` bigint(20) NOT NULL AUTO_INCREMENT, `case_id` bigint(20) DEFAULT NULL , `group_id` bigint(20) DEFAULT NULL , `clazz` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL , `type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL , `obj` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL , `mc` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL , `sm` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, KEY `idx_case_id` (`case_id`) USING BTREE) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
  14. ALTER TABLE `temp_clean_dx`
  15. ADD INDEX idx_clazz(`clazz`);
  16. ALTER TABLE `temp_clean_dx`
  17. ADD INDEX idx_obj (`obj`);
  18. INSERT INTO temp_clean_dx(case_id, group_id, clazz, type, obj, mc, sm)(select case_id, group_id, clazz, type, obj, mc, sm
  19. from clean_table_dx
  20. where case_id = 6);
  21. create
  22. TEMPORARY table temp_clean_gx( id bigint NOT NULL AUTO_INCREMENT, case_id bigint null, tb_gx_id bigint null comment '关联关系id', obj1 varchar(500) null comment '对象', obj2 varchar(500) null comment '对象', gx_mc varchar(255) null comment '关系描述', clazz varchar(20) null comment '关系类型sfz_card', num varchar(20) null comment '统计数量', sm varchar(255) null comment '对这个数量的描述', sj datetime null comment '发生时间', team_id varchar(255) null comment '组id', ext1 varchar(255) null comment '扩展字段1', ext2 varchar(255) null comment '扩展字段2', sbxq int(11) null,sjfx int(11) null,obj1_name varchar(150) null,obj2_name varchar(150) null,cs int(11) null, PRIMARY KEY (`id`)) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
  23. ALTER TABLE `temp_clean_gx`
  24. ADD INDEX idx_clazz(`clazz`);
  25. ALTER TABLE `temp_clean_gx`
  26. ADD INDEX idx_obj1(`obj1`);
  27. ALTER TABLE `temp_clean_gx`
  28. ADD INDEX idx_obj2(`obj2`);
  29. INSERT INTO temp_clean_gx(case_id, tb_gx_id, obj1, obj2, gx_mc, clazz, num, sm, obj1_name, obj2_name, sbxq, cs,
  30. sjfx)(Select case_id,
  31. tb_gx_id,
  32. obj1,
  33. obj2,
  34. gx_mc,
  35. clazz,
  36. num,
  37. sm,
  38. obj1_name,
  39. obj2_name,
  40. sbxq,
  41. cs,
  42. sjfx
  43. from clean_table_gx
  44. where case_id = 6);
  45. CREATE
  46. TEMPORARY TABLE IF NOT EXISTS temp_dx_main( id BIGINT(20) NOT NULL AUTO_INCREMENT, team_id VARCHAR(50) DEFAULT NULL, bm VARCHAR(200) DEFAULT NULL, class VARCHAR(200) DEFAULT NULL, mc VARCHAR(200) DEFAULT NULL, sfz VARCHAR(200) DEFAULT NULL, sm VARCHAR(2000) DEFAULT NULL, dxId BIGINT(20) DEFAULT NULL,fzId BIGINT(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
  47. INSERT INTO temp_dx_main(class, bm, mc, sm, dxId, fzId)
  48. SELECT max(IF(obj_type = 1, 'sfz', 'ins')),
  49. max(IF(obj_type = 1, obj_type_no, obj_name)),
  50. max(obj_name),
  51. '' AS sm,
  52. id,
  53. obj_group
  54. FROM case_obj
  55. WHERE case_id = 6
  56. GROUP BY obj_type_no, obj_name;
  57. INSERT INTO temp_dx_main(class, bm, mc, sm)
  58. SELECT max(clazz), obj, max(mc), max(CAST(sm as CHAR(2000)))
  59. FROM temp_clean_dx
  60. WHERE clazz IN ('sfz', 'ins')
  61. GROUP BY obj;
  62. DELETE
  63. FROM temp_dx_main
  64. WHERE bm is null
  65. OR bm NOT IN ('513126197412174415', '成都市章大妈农副产品有限公司', '110101199003071233', '330382199003081853',
  66. '510183198103160051');
  67. CREATE
  68. TEMPORARY TABLE IF NOT EXISTS temp_dx( id BIGINT(20) NOT NULL AUTO_INCREMENT, team_id VARCHAR(50) DEFAULT NULL, class VARCHAR(20) DEFAULT NULL, type VARCHAR(50) DEFAULT NULL, bm VARCHAR(500) DEFAULT NULL, mc VARCHAR(200) DEFAULT NULL, sfz VARCHAR(50) DEFAULT NULL, zp VARCHAR(100) DEFAULT NULL, sm VARCHAR(2000) DEFAULT NULL, main VARCHAR(20) DEFAULT NULL, kg VARCHAR(100) DEFAULT NULL, dxId BIGINT(20) DEFAULT NULL,fzId BIGINT(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE = INNODB DEFAULT CHARSET = utf8mb4; CREATE
  69. TEMPORARY TABLE IF NOT EXISTS temp_dx2 ( id BIGINT(20) NOT NULL, team_id VARCHAR(50) DEFAULT NULL, class VARCHAR(20) DEFAULT NULL, type VARCHAR(50) DEFAULT NULL, bm VARCHAR(200) DEFAULT NULL, mc VARCHAR(200) DEFAULT NULL, sfz VARCHAR(50) DEFAULT NULL, zp VARCHAR(100) DEFAULT NULL, sm VARCHAR(2000) DEFAULT NULL, main VARCHAR(20) DEFAULT NULL, kg VARCHAR(100) DEFAULT NULL, dxId BIGINT(20) DEFAULT NULL, fzId BIGINT(20) DEFAULT NULL) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
  70. ALTER TABLE `temp_dx`
  71. ADD INDEX idx_bm(`bm`);
  72. ALTER TABLE `temp_dx`
  73. ADD INDEX idx_class(`class`);
  74. ALTER TABLE `temp_dx2`
  75. ADD INDEX idx_bm(`bm`);
  76. ALTER TABLE `temp_dx2`
  77. ADD INDEX idx_class(`class`);
  78. INSERT INTO temp_dx(team_id, class, bm, mc, sfz, sm, main, dxId, fzId)
  79. SELECT team_id,
  80. class,
  81. bm,
  82. temp_dx_main.mc,
  83. bm,
  84. sm,
  85. 'sys',
  86. dxId,
  87. fzId
  88. FROM temp_dx_main
  89. group by temp_dx_main.bm, temp_dx_main.mc;
  90. CREATE
  91. TEMPORARY TABLE IF NOT EXISTS temp_tel( id BIGINT(20) NOT NULL AUTO_INCREMENT, team_id VARCHAR(50) DEFAULT NULL, dx1 VARCHAR(500) DEFAULT NULL, dx2 VARCHAR(500) DEFAULT NULL, count_num int(11) DEFAULT NULL,sm VARCHAR(500) DEFAULT NULL,sbxq int(11) DEFAULT NULL,sjfx int(11) DEFAULT null, PRIMARY KEY (`id`)) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
  92. ALTER TABLE `temp_tel`
  93. ADD INDEX idx_dx1(`dx1`);
  94. ALTER TABLE `temp_tel`
  95. ADD INDEX idx_dx2(`dx2`);
  96. CREATE
  97. TEMPORARY TABLE IF NOT EXISTS temp_yh( id BIGINT(20) NOT NULL AUTO_INCREMENT, team_id VARCHAR(50) DEFAULT NULL, dx1 VARCHAR(500) DEFAULT NULL, dx2 VARCHAR(500) DEFAULT NULL, count_num DECIMAL(38, 2) DEFAULT NULL, sm VARCHAR(200) DEFAULT NULL,sbxq int(11) DEFAULT NULL,sjfx int(11) DEFAULT null, PRIMARY KEY (`id`)) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
  98. ALTER TABLE `temp_yh`
  99. ADD INDEX idx_dx1(`dx1`);
  100. ALTER TABLE `temp_yh`
  101. ADD INDEX idx_dx2(`dx2`);
  102. TRUNCATE TABLE temp_dx2;
  103. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  104. select id,
  105. class,
  106. type,
  107. bm,
  108. mc,
  109. sfz,
  110. zp,
  111. sm,
  112. main,
  113. kg,
  114. fzId
  115. from temp_dx;
  116. INSERT INTO temp_dx (class, bm, mc)
  117. SELECT clazz, obj, mc
  118. FROM temp_clean_dx
  119. WHERE clazz = 'card'
  120. AND obj IN
  121. (SELECT obj2 FROM temp_clean_gx as ctg where ctg.clazz in ('sfz_card') AND obj1 IN (SELECT bm FROM temp_dx2));
  122. TRUNCATE TABLE temp_dx2;
  123. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  124. select id,
  125. class,
  126. type,
  127. bm,
  128. mc,
  129. sfz,
  130. zp,
  131. sm,
  132. main,
  133. kg,
  134. fzId
  135. from temp_dx;
  136. INSERT INTO temp_yh(dx1, dx2, count_num, sm, sbxq, sjfx)
  137. SELECT obj1, obj2, num, sm, sbxq, sjfx
  138. FROM temp_clean_gx
  139. WHERE clazz = 'card_card'
  140. and sjfx = 1
  141. AND obj1 IN (SELECT bm FROM temp_dx where bm is not null)
  142. AND obj2 NOT IN (SELECT bm FROM temp_dx2 where bm is not null)
  143. GROUP BY obj1, obj2, sj;
  144. INSERT INTO temp_yh(dx1, dx2, count_num, sm, sbxq, sjfx)
  145. SELECT obj1, obj2, num, sm, sbxq, sjfx
  146. FROM temp_clean_gx
  147. WHERE clazz = 'card_card'
  148. and sjfx = 2
  149. AND obj2 IN (SELECT bm FROM temp_dx where bm is not null)
  150. AND obj1 NOT IN (SELECT bm FROM temp_dx2 where bm is not null)
  151. GROUP BY obj1, obj2, sj;
  152. INSERT INTO temp_dx(class, bm, mc)
  153. SELECT 'card_gt', obj, mc
  154. FROM temp_clean_dx
  155. WHERE clazz IN ('card')
  156. AND obj IN (SELECT dx2 FROM temp_yh where sjfx = 1 GROUP BY dx2 HAVING count(dx1) > 1);
  157. INSERT INTO temp_dx(class, bm, mc)
  158. SELECT 'card_gt', obj, mc
  159. FROM temp_clean_dx
  160. WHERE clazz IN ('card')
  161. AND obj IN (SELECT dx1 FROM temp_yh where sjfx = 2 GROUP BY dx1 HAVING count(dx2) > 1);
  162. TRUNCATE TABLE temp_dx2;
  163. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  164. select id,
  165. class,
  166. type,
  167. bm,
  168. mc,
  169. sfz,
  170. zp,
  171. sm,
  172. main,
  173. kg,
  174. fzId
  175. from temp_dx;
  176. truncate temp_yh;
  177. TRUNCATE TABLE temp_dx2;
  178. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  179. select id,
  180. class,
  181. type,
  182. bm,
  183. mc,
  184. sfz,
  185. zp,
  186. sm,
  187. main,
  188. kg,
  189. fzId
  190. from temp_dx;
  191. INSERT INTO temp_yh(dx1, dx2, count_num, sm, sbxq, sjfx)
  192. SELECT obj1, obj2, num, sm, sbxq, sjfx
  193. FROM temp_clean_gx
  194. WHERE clazz = 'card_card'
  195. and sjfx = 1
  196. AND obj1 IN (SELECT bm FROM temp_dx where bm is not null)
  197. AND obj2 IN (SELECT bm FROM temp_dx2 where bm is not null)
  198. GROUP BY obj1, obj2, sj;
  199. INSERT INTO temp_yh(dx1, dx2, count_num, sm, sbxq, sjfx)
  200. SELECT obj1, obj2, num, sm, sbxq, sjfx
  201. FROM temp_clean_gx
  202. WHERE clazz = 'card_card'
  203. and sjfx = 2
  204. AND obj2 IN (SELECT bm FROM temp_dx where bm is not null)
  205. AND obj1 IN (SELECT bm FROM temp_dx2 where bm is not null)
  206. GROUP BY obj1, obj2, sj;
  207. CREATE
  208. TEMPORARY TABLE IF NOT EXISTS temp_gx( id BIGINT(20) NOT NULL AUTO_INCREMENT, clazz VARCHAR(20) DEFAULT NULL, dx1 VARCHAR(500) DEFAULT NULL, dx2 VARCHAR(500) DEFAULT NULL, mc VARCHAR(200) DEFAULT NULL, sm TEXT DEFAULT NULL, team_dx1 VARCHAR(50) DEFAULT NULL, team_dx2 VARCHAR(50) DEFAULT NULL,num VARCHAR(20) DEFAULT NULL,obj1_name VARCHAR(150) DEFAULT NULL, obj2_name VARCHAR(150) DEFAULT NULL, sbxq int(11) DEFAULT NULL,sjfx int(11) DEFAULT NULL, cs int(11) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
  209. ALTER TABLE `temp_gx`
  210. ADD INDEX idx_dx1(`dx1`);
  211. ALTER TABLE `temp_gx`
  212. ADD INDEX idx_dx2(`dx1`);
  213. ALTER TABLE `temp_gx`
  214. ADD INDEX idx_clazz(`clazz`);
  215. TRUNCATE TABLE temp_dx2;
  216. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  217. select id,
  218. class,
  219. type,
  220. bm,
  221. mc,
  222. sfz,
  223. zp,
  224. sm,
  225. main,
  226. kg,
  227. fzId
  228. from temp_dx;
  229. INSERT INTO temp_gx(clazz, dx1, dx2, mc, sm, num, obj1_name, obj2_name, sbxq, cs, sjfx)
  230. SELECT clazz,
  231. obj1,
  232. obj2,
  233. gx_mc,
  234. sm,
  235. num,
  236. obj1_name,
  237. obj2_name,
  238. sbxq,
  239. cs,
  240. sjfx
  241. FROM temp_clean_gx
  242. WHERE obj1 IN (SELECT bm FROM temp_dx)
  243. AND obj2 IN (SELECT bm FROM temp_dx2)
  244. AND clazz NOT IN ('card_card', 'sfz_sfz', 'sfz_obj', 'tel_tel');
  245. INSERT INTO temp_gx(clazz, dx1, dx2, mc, sm, num, obj1_name, obj2_name, sbxq, cs)
  246. SELECT clazz,
  247. obj1,
  248. obj2,
  249. gx_mc,
  250. sm,
  251. num,
  252. obj1_name,
  253. obj2_name,
  254. sbxq,
  255. cs
  256. FROM temp_clean_gx
  257. WHERE clazz = 'card_card'
  258. and obj1 IN (SELECT bm FROM temp_dx)
  259. AND obj2 IN (SELECT bm FROM temp_dx2);
  260. SELECT *, max(dxId) as dxId0, concat(IFNULL(mc, ''), ' ', bm) as mc1
  261. FROM temp_dx
  262. group by bm;
  263. SELECT id,
  264. clazz,
  265. dx1,
  266. dx2,
  267. mc,
  268. sm,
  269. obj1_name,
  270. obj2_name
  271. FROM temp_gx
  272. where clazz not in ('card_card', 'tel_tel')
  273. group by dx1, dx2;
  274. select *
  275. from (SELECT id,
  276. clazz,
  277. dx1,
  278. dx2,
  279. SUM(cs) AS nums,
  280. SUM(num) AS money,
  281. sbxq,
  282. sjfx
  283. FROM temp_gx
  284. where clazz = 'card_card'
  285. group by dx1, dx2) as asdf
  286. where clazz = 'card_card';
  287. SELECT id,
  288. clazz,
  289. dx1,
  290. dx2,
  291. SUM(num) as nums,
  292. sm,
  293. obj1_name,
  294. obj2_name,
  295. sbxq,
  296. sjfx
  297. FROM temp_gx
  298. where clazz = 'tel_tel'
  299. group by dx1, dx2
  300. having nums >= 0;