交易共同.sql 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  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 TEMPORARY TABLE `temp_clean_dx`
  13. (
  14. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  15. `case_id` bigint(20) DEFAULT NULL,
  16. `group_id` bigint(20) DEFAULT NULL,
  17. `clazz` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  18. `type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  19. `obj` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  20. `mc` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  21. `sm` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  22. PRIMARY KEY (`id`) USING BTREE,
  23. KEY `idx_case_id` (`case_id`) USING BTREE
  24. ) ENGINE = InnoDB
  25. DEFAULT CHARSET = utf8mb4;
  26. ALTER TABLE `temp_clean_dx`
  27. ADD INDEX idx_clazz (`clazz`);
  28. ALTER TABLE `temp_clean_dx`
  29. ADD INDEX idx_obj (`obj`);
  30. INSERT INTO temp_clean_dx(case_id, group_id, clazz, type, obj, mc, sm)(select case_id, group_id, clazz, type, obj, mc, sm
  31. from clean_table_dx
  32. where case_id = 12);
  33. create TEMPORARY table temp_clean_gx
  34. (
  35. id bigint NOT NULL AUTO_INCREMENT,
  36. case_id bigint null,
  37. tb_gx_id bigint null comment '关联关系id',
  38. obj1 varchar(500) null comment '对象',
  39. obj2 varchar(500) null comment '对象',
  40. gx_mc varchar(255) null comment '关系描述',
  41. clazz varchar(20) null comment '关系类型sfz_card',
  42. num varchar(20) null comment '统计数量',
  43. sm varchar(255) null comment '对这个数量的描述',
  44. sj datetime null comment '发生时间',
  45. team_id varchar(255) null comment '组id',
  46. ext1 varchar(255) null comment '扩展字段1',
  47. ext2 varchar(255) null comment '扩展字段2',
  48. sbxq int(11) null,
  49. sjfx int(11) null,
  50. obj1_name varchar(150) null,
  51. obj2_name varchar(150) null,
  52. cs int(11) null,
  53. PRIMARY KEY (`id`)
  54. ) ENGINE = INNODB
  55. DEFAULT CHARSET = utf8mb4;
  56. ALTER TABLE `temp_clean_gx`
  57. ADD INDEX idx_clazz (`clazz`);
  58. ALTER TABLE `temp_clean_gx`
  59. ADD INDEX idx_obj1 (`obj1`);
  60. ALTER TABLE `temp_clean_gx`
  61. ADD INDEX idx_obj2 (`obj2`);
  62. INSERT INTO temp_clean_gx(case_id, tb_gx_id, obj1, obj2, gx_mc, clazz, num, sm, obj1_name, obj2_name, sbxq, cs,
  63. sjfx)(Select case_id,
  64. tb_gx_id,
  65. obj1,
  66. obj2,
  67. gx_mc,
  68. clazz,
  69. num,
  70. sm,
  71. obj1_name,
  72. obj2_name,
  73. sbxq,
  74. cs,
  75. sjfx
  76. from clean_table_gx
  77. where case_id = 12);
  78. CREATE TEMPORARY TABLE IF NOT EXISTS temp_dx_main
  79. (
  80. id BIGINT(20) NOT NULL AUTO_INCREMENT,
  81. team_id VARCHAR(50) DEFAULT NULL,
  82. bm VARCHAR(200) DEFAULT NULL,
  83. class VARCHAR(200) DEFAULT NULL,
  84. mc VARCHAR(200) DEFAULT NULL,
  85. sfz VARCHAR(200) DEFAULT NULL,
  86. sm VARCHAR(2000) DEFAULT NULL,
  87. dxId BIGINT(20) DEFAULT NULL,
  88. fzId BIGINT(20) DEFAULT NULL,
  89. PRIMARY KEY (`id`)
  90. ) ENGINE = INNODB
  91. DEFAULT CHARSET = utf8mb4;
  92. INSERT INTO temp_dx_main(class, bm, mc, sm, dxId, fzId)
  93. SELECT max(IF(obj_type = 1, 'sfz', 'ins')),
  94. max(IF(obj_type = 1, obj_type_no, obj_name)),
  95. max(obj_name),
  96. '' AS sm,
  97. id,
  98. obj_group
  99. FROM case_obj
  100. WHERE case_id = 12
  101. GROUP BY obj_type_no, obj_name;
  102. INSERT INTO temp_dx_main(class, bm, mc, sm)
  103. SELECT max(clazz), obj, max(mc), max(CAST(sm as CHAR(2000)))
  104. FROM temp_clean_dx
  105. WHERE clazz IN ('sfz', 'ins')
  106. GROUP BY obj;
  107. DELETE
  108. FROM temp_dx_main
  109. WHERE bm is null
  110. OR bm NOT IN
  111. ('510183198103160051', '555726200311285526', '513126197412174415', '511381198205064213', '51312619850312006X',
  112. '51312619781001015X', '330382195404070831');
  113. CREATE TEMPORARY TABLE IF NOT EXISTS temp_dx
  114. (
  115. id BIGINT(20) NOT NULL AUTO_INCREMENT,
  116. team_id VARCHAR(50) DEFAULT NULL,
  117. class VARCHAR(20) DEFAULT NULL,
  118. type VARCHAR(50) DEFAULT NULL,
  119. bm VARCHAR(500) DEFAULT NULL,
  120. mc VARCHAR(200) DEFAULT NULL,
  121. sfz VARCHAR(50) DEFAULT NULL,
  122. zp VARCHAR(100) DEFAULT NULL,
  123. sm VARCHAR(2000) DEFAULT NULL,
  124. main VARCHAR(20) DEFAULT NULL,
  125. kg VARCHAR(100) DEFAULT NULL,
  126. dxId BIGINT(20) DEFAULT NULL,
  127. fzId BIGINT(20) DEFAULT NULL,
  128. PRIMARY KEY (`id`)
  129. ) ENGINE = INNODB
  130. DEFAULT CHARSET = utf8mb4;
  131. CREATE TEMPORARY TABLE IF NOT EXISTS temp_dx2
  132. (
  133. id BIGINT(20) NOT NULL,
  134. team_id VARCHAR(50) DEFAULT NULL,
  135. class VARCHAR(20) DEFAULT NULL,
  136. type VARCHAR(50) DEFAULT NULL,
  137. bm VARCHAR(200) DEFAULT NULL,
  138. mc VARCHAR(200) DEFAULT NULL,
  139. sfz VARCHAR(50) DEFAULT NULL,
  140. zp VARCHAR(100) DEFAULT NULL,
  141. sm VARCHAR(2000) DEFAULT NULL,
  142. main VARCHAR(20) DEFAULT NULL,
  143. kg VARCHAR(100) DEFAULT NULL,
  144. dxId BIGINT(20) DEFAULT NULL,
  145. fzId BIGINT(20) DEFAULT NULL
  146. ) ENGINE = INNODB
  147. DEFAULT CHARSET = utf8mb4;
  148. ALTER TABLE `temp_dx`
  149. ADD INDEX idx_bm (`bm`);
  150. ALTER TABLE `temp_dx`
  151. ADD INDEX idx_class (`class`);
  152. ALTER TABLE `temp_dx2`
  153. ADD INDEX idx_bm (`bm`);
  154. ALTER TABLE `temp_dx2`
  155. ADD INDEX idx_class (`class`);
  156. INSERT INTO temp_dx(team_id, class, bm, mc, sfz, sm, main, dxId, fzId)
  157. SELECT team_id,
  158. class,
  159. bm,
  160. temp_dx_main.mc,
  161. bm,
  162. sm,
  163. 'sys',
  164. dxId,
  165. fzId
  166. FROM temp_dx_main
  167. group by temp_dx_main.bm, temp_dx_main.mc;
  168. CREATE TEMPORARY TABLE IF NOT EXISTS temp_tel
  169. (
  170. id BIGINT(20) NOT NULL AUTO_INCREMENT,
  171. team_id VARCHAR(50) DEFAULT NULL,
  172. dx1 VARCHAR(500) DEFAULT NULL,
  173. dx2 VARCHAR(500) DEFAULT NULL,
  174. count_num int(11) DEFAULT NULL,
  175. sm VARCHAR(500) DEFAULT NULL,
  176. sbxq int(11) DEFAULT NULL,
  177. sjfx int(11) DEFAULT null,
  178. PRIMARY KEY (`id`)
  179. ) ENGINE = INNODB
  180. DEFAULT CHARSET = utf8mb4;
  181. ALTER TABLE `temp_tel`
  182. ADD INDEX idx_dx1 (`dx1`);
  183. ALTER TABLE `temp_tel`
  184. ADD INDEX idx_dx2 (`dx2`);
  185. CREATE TEMPORARY TABLE IF NOT EXISTS temp_yh
  186. (
  187. id BIGINT(20) NOT NULL AUTO_INCREMENT,
  188. team_id VARCHAR(50) DEFAULT NULL,
  189. dx1 VARCHAR(500) DEFAULT NULL,
  190. dx2 VARCHAR(500) DEFAULT NULL,
  191. count_num DECIMAL(38, 2) DEFAULT NULL,
  192. sm VARCHAR(200) DEFAULT NULL,
  193. sbxq int(11) DEFAULT NULL,
  194. sjfx int(11) DEFAULT null,
  195. PRIMARY KEY (`id`)
  196. ) ENGINE = INNODB
  197. DEFAULT CHARSET = utf8mb4;
  198. ALTER TABLE `temp_yh`
  199. ADD INDEX idx_dx1 (`dx1`);
  200. ALTER TABLE `temp_yh`
  201. ADD INDEX idx_dx2 (`dx2`);
  202. TRUNCATE TABLE temp_dx2;
  203. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  204. select id,
  205. class,
  206. type,
  207. bm,
  208. mc,
  209. sfz,
  210. zp,
  211. sm,
  212. main,
  213. kg,
  214. fzId
  215. from temp_dx;
  216. INSERT INTO temp_dx (class, bm, mc)
  217. SELECT clazz, obj, mc
  218. FROM temp_clean_dx
  219. WHERE clazz = 'card'
  220. AND obj IN
  221. (SELECT obj2 FROM temp_clean_gx as ctg where ctg.clazz in ('sfz_card') AND obj1 IN (SELECT bm FROM temp_dx2));
  222. TRUNCATE TABLE temp_dx2;
  223. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  224. select id,
  225. class,
  226. type,
  227. bm,
  228. mc,
  229. sfz,
  230. zp,
  231. sm,
  232. main,
  233. kg,
  234. fzId
  235. from temp_dx;
  236. INSERT INTO temp_yh(dx1, dx2, count_num, sm, sbxq, sjfx)
  237. SELECT obj1, obj2, num, sm, sbxq, sjfx, sj
  238. FROM temp_clean_gx
  239. WHERE clazz = 'card_card'
  240. and sjfx = 1
  241. AND obj1 IN (SELECT bm FROM temp_dx where bm is not null)
  242. AND obj2 NOT IN (SELECT bm FROM temp_dx2 where bm is not null)
  243. 700203010110050509,6232843482000000001
  244. GROUP BY obj1, obj2, sj;
  245. INSERT INTO temp_yh(dx1, dx2, count_num, sm, sbxq, sjfx)
  246. SELECT obj1, obj2, num, sm, sbxq, sjfx
  247. FROM temp_clean_gx
  248. WHERE clazz = 'card_card'
  249. and sjfx = 2
  250. AND obj2 IN (SELECT bm FROM temp_dx where bm is not null)
  251. AND obj1 NOT IN (SELECT bm FROM temp_dx2 where bm is not null)
  252. GROUP BY obj1, obj2, sj;
  253. INSERT INTO temp_dx(class, bm, mc)
  254. SELECT 'card_gt', obj, mc
  255. FROM temp_clean_dx
  256. WHERE clazz IN ('card')
  257. AND obj IN (SELECT dx2 FROM temp_yh where sjfx = 1 GROUP BY dx2 HAVING count(dx1) > 1);
  258. INSERT INTO temp_dx(class, bm, mc)
  259. SELECT 'card_gt', obj, mc
  260. FROM temp_clean_dx
  261. WHERE clazz IN ('card')
  262. AND obj IN (SELECT dx1 FROM temp_yh where sjfx = 2 GROUP BY dx1 HAVING count(dx2) > 1);
  263. TRUNCATE TABLE temp_dx2;
  264. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  265. select id,
  266. class,
  267. type,
  268. bm,
  269. mc,
  270. sfz,
  271. zp,
  272. sm,
  273. main,
  274. kg,
  275. fzId
  276. from temp_dx;
  277. truncate temp_yh;
  278. TRUNCATE TABLE temp_dx2;
  279. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  280. select id,
  281. class,
  282. type,
  283. bm,
  284. mc,
  285. sfz,
  286. zp,
  287. sm,
  288. main,
  289. kg,
  290. fzId
  291. from temp_dx;
  292. INSERT INTO temp_yh(dx1, dx2, count_num, sm, sbxq, sjfx)
  293. SELECT obj1, obj2, num, sm, sbxq, sjfx
  294. FROM temp_clean_gx
  295. WHERE clazz = 'card_card'
  296. and sjfx = 1
  297. AND obj1 IN (SELECT bm FROM temp_dx where bm is not null)
  298. AND obj2 IN (SELECT bm FROM temp_dx2 where bm is not null)
  299. GROUP BY obj1, obj2, sj;
  300. INSERT INTO temp_yh(dx1, dx2, count_num, sm, sbxq, sjfx)
  301. SELECT obj1, obj2, num, sm, sbxq, sjfx
  302. FROM temp_clean_gx
  303. WHERE clazz = 'card_card'
  304. and sjfx = 2
  305. AND obj2 IN (SELECT bm FROM temp_dx where bm is not null)
  306. AND obj1 IN (SELECT bm FROM temp_dx2 where bm is not null)
  307. GROUP BY obj1, obj2, sj;
  308. CREATE TEMPORARY TABLE IF NOT EXISTS temp_gx
  309. (
  310. id BIGINT(20) NOT NULL AUTO_INCREMENT,
  311. clazz VARCHAR(20) DEFAULT NULL,
  312. dx1 VARCHAR(500) DEFAULT NULL,
  313. dx2 VARCHAR(500) DEFAULT NULL,
  314. mc VARCHAR(200) DEFAULT NULL,
  315. sm TEXT DEFAULT NULL,
  316. team_dx1 VARCHAR(50) DEFAULT NULL,
  317. team_dx2 VARCHAR(50) DEFAULT NULL,
  318. num VARCHAR(20) DEFAULT NULL,
  319. obj1_name VARCHAR(150) DEFAULT NULL,
  320. obj2_name VARCHAR(150) DEFAULT NULL,
  321. sbxq int(11) DEFAULT NULL,
  322. sjfx int(11) DEFAULT NULL,
  323. cs int(11) DEFAULT NULL,
  324. PRIMARY KEY (`id`)
  325. ) ENGINE = INNODB
  326. DEFAULT CHARSET = utf8mb4;
  327. ALTER TABLE `temp_gx`
  328. ADD INDEX idx_dx1 (`dx1`);
  329. ALTER TABLE `temp_gx`
  330. ADD INDEX idx_dx2 (`dx1`);
  331. ALTER TABLE `temp_gx`
  332. ADD INDEX idx_clazz (`clazz`);
  333. TRUNCATE TABLE temp_dx2;
  334. INSERT INTO temp_dx2(id, class, type, bm, mc, sfz, zp, sm, main, kg, fzId)
  335. select id,
  336. class,
  337. type,
  338. bm,
  339. mc,
  340. sfz,
  341. zp,
  342. sm,
  343. main,
  344. kg,
  345. fzId
  346. from temp_dx;
  347. INSERT INTO temp_gx(clazz, dx1, dx2, mc, sm, num, obj1_name, obj2_name, sbxq, cs, sjfx)
  348. SELECT clazz,
  349. obj1,
  350. obj2,
  351. gx_mc,
  352. sm,
  353. num,
  354. obj1_name,
  355. obj2_name,
  356. sbxq,
  357. cs,
  358. sjfx
  359. FROM temp_clean_gx
  360. WHERE obj1 IN (SELECT bm FROM temp_dx)
  361. AND obj2 IN (SELECT bm FROM temp_dx2)
  362. AND clazz NOT IN ('card_card', 'sfz_sfz', 'sfz_obj', 'tel_tel');
  363. INSERT INTO temp_gx(clazz, dx1, dx2, mc, sm, num, obj1_name, obj2_name, sbxq, cs)
  364. SELECT clazz,
  365. obj1,
  366. obj2,
  367. gx_mc,
  368. sm,
  369. num,
  370. obj1_name,
  371. obj2_name,
  372. sbxq,
  373. cs
  374. FROM temp_clean_gx
  375. WHERE clazz = 'card_card'
  376. and obj1 IN (SELECT bm FROM temp_dx)
  377. AND obj2 IN (SELECT bm FROM temp_dx2);
  378. SELECT *, max(dxId) as dxId0, concat(IFNULL(mc, ''), ' ', bm) as mc1
  379. FROM temp_dx
  380. group by bm;
  381. SELECT id,
  382. clazz,
  383. dx1,
  384. dx2,
  385. mc,
  386. sm,
  387. obj1_name,
  388. obj2_name
  389. FROM temp_gx
  390. where clazz not in ('card_card', 'tel_tel')
  391. group by dx1, dx2;
  392. select *
  393. from (SELECT id,
  394. clazz,
  395. dx1,
  396. dx2,
  397. SUM(cs) AS nums,
  398. SUM(num) AS money,
  399. sbxq,
  400. sjfx
  401. FROM temp_gx
  402. where clazz = 'card_card'
  403. group by dx1, dx2) as asdf
  404. where clazz = 'card_card';
  405. SELECT id,
  406. clazz,
  407. dx1,
  408. dx2,
  409. SUM(num) as nums,
  410. sm,
  411. obj1_name,
  412. obj2_name,
  413. sbxq,
  414. sjfx
  415. FROM temp_gx
  416. where clazz = 'tel_tel'
  417. group by dx1, dx2
  418. having nums >= 0;