Uso integral de tablas intermedias en consultas relacionadas con subconsultas

Conexión SQL (JOIN) 

demanda:

  • Consultar el problema de la inconsistencia entre la información de registro comercial y la información de registro en el sistema.
  • Los campos consistentes no están marcados, los campos inconsistentes están marcados con "●"
  • Si solo el índice de capital de un inversor en el sistema externo está vacío, se mostrará un círculo vacío cuando se advierta el índice de capital.

Pautas de consulta SQL: 

  • Tenga en cuenta la diferencia entre la combinación izquierda y la consulta de combinación
  • Uso de caso cuando
  • Se puede obtener una tabla intermedia virtual mediante una consulta relacionada, y se pueden realizar consultas relacionadas, subconsultas, etc., basadas en la tabla intermedia.
  • Primero, piense en cómo abordarlo, divida un problema complejo en varios problemas simples y, finalmente, únase.

 Vista previa de los resultados de la consulta:

  • Parte del campo de visualización

Pequeña prueba: 

SELECT
	count( a.unitid ) AS "条数",
	HEX( a.unitid ) AS "单位ID" 
FROM
	PMS_COMPANY_HOLDER AS a 
WHERE
	a.HOLDER_ZB_NEW = '' 
	AND HEX( a.unitid ) IN (
SELECT
	HEX( g.unitid ) 
FROM
	GXJT_YJ AS g
	LEFT JOIN md_org AS m ON m.recid = g.unitid
	LEFT JOIN PMS_COMPANY_INFO AS p ON m.recid = p.unitid 
WHERE
	HEX( g.unitid ) LIKE '%67%' 
	AND g.warningType = 'REGISTRATION_DIFFERENT' 
	) 
GROUP BY
	a.unitid

 

 Demuestra tus habilidades:

define query ad_query(@unitId string)                  
begin   
SELECT
	w.stdname AS "单位",
CASE	
	WHEN w.WARNINGREASON CONTAINS 'COMPANY_NAME' THEN
	'       ●' 
	END AS "企业名称",
CASE	
		WHEN y.num > 0 THEN
		'       ○' 
		WHEN w.WARNINGREASON CONTAINS 'EQUITY_SITUATION' THEN
		'       ●' 
	END AS "股权情况",
CASE
		WHEN w.WARNINGREASON CONTAINS 'LEGAL_REPRESENTATIVE' THEN
		'       ●' 
	END AS "法定代表人",
CASE
		WHEN w.WARNINGREASON CONTAINS 'REGISTERED_CAPITAL' THEN
		'       ●' 
	END AS "注册资本",
CASE
		WHEN w.WARNINGREASON CONTAINS 'REGISTRATION_PROVIENCE' THEN
		'       ●' 
	END AS "注册地",
CASE
		WHEN w.WARNINGREASON CONTAINS 'REGISTRATION_DATE' THEN
		'       ●' 
	END AS "注册日期",
	w.COMPANY_S_EXT_NODENUM AS "所属省份",
	w.UNITID AS "单位id",
	w.GQ_DATATIME AS "股权数据时期",
	w.GS_DATATIME AS "工商数据时期" 
FROM
	(
	SELECT
		m.stdname,
	CASE	
			WHEN g.WARNINGREASON CONTAINS 'COMPANY_NAME' THEN
			'       ●' 
		END AS "COMPANY_NAME",
	CASE	
			WHEN g.WARNINGREASON CONTAINS 'EQUITY_SITUATION' THEN
			'       ●' 
		END AS "EQUITY_SITUATION",
	CASE	
			WHEN g.WARNINGREASON CONTAINS 'LEGAL_REPRESENTATIVE' THEN
			'       ●' 
		END AS "LEGAL_REPRESENTATIVE",
	CASE	
			WHEN g.WARNINGREASON CONTAINS 'REGISTERED_CAPITAL' THEN
			'       ●' 
		END AS "REGISTERED_CAPITAL",
	CASE	
			WHEN g.WARNINGREASON CONTAINS 'REGISTRATION_PROVIENCE' THEN
			'       ●' 
		END AS "REGISTRATION_PROVIENCE",
	CASE	
			WHEN g.WARNINGREASON CONTAINS 'REGISTRATION_DATE' THEN
			'       ●' 
		END AS "REGISTRATION_DATE",
		p.COMPANY_S_EXT_NODENUM AS "COMPANY_S_EXT_NODENUM",
		g.UNITID AS "UNITID",
		g.GQ_DATATIME AS "GQ_DATATIME",
		g.GS_DATATIME AS "GS_DATATIME",
		g.WARNINGREASON AS "WARNINGREASON" 
	FROM
		GXJT_YJ AS g
		JOIN md_org AS m ON m.recid = g.unitid
		JOIN PMS_COMPANY_INFO AS p ON m.recid = p.unitid 
	WHERE
		to_char ( m.parents ) CONTAINS ( to_char ( @unitId ) ) 
		AND g.warningType = 'REGISTRATION_DIFFERENT' 
	) AS w
	LEFT JOIN (
	SELECT
		count( a.unitid ) AS num,
		a.unitid 
	FROM
		PMS_COMPANY_HOLDER AS a 
	WHERE
		a.HOLDER_ZB_NEW = '' 
		AND a.unitid IN (
		SELECT
			g.unitid 
		FROM
			GXJT_YJ AS g
			JOIN md_org AS m ON m.recid = g.unitid
			JOIN PMS_COMPANY_INFO AS p ON m.recid = p.unitid 
		WHERE
			to_char ( m.parents ) CONTAINS ( to_char ( @unitId ) ) 
			AND g.warningType = 'REGISTRATION_DIFFERENT' 
		) 
	GROUP BY
	a.unitid 
) AS y ON y.unitid = w.UNITID

end

 

Supongo que te gusta

Origin blog.csdn.net/xiangwang2016/article/details/102738235
Recomendado
Clasificación