【发布时间】:2019-12-04 20:27:04
【问题描述】:
我需要将以下查询转换为返回相同的函数/过程。 这是查询
SELECT ((SELECT count(*) FROM persona WHERE DTYPE = 'Vendedor' AND ACTIVO = 1) * (SELECT count(*) FROM TIPO_DOCUMENTO WHERE ENTIDAD = 'Vendedor' AND ACTIVO = 1) +
(SELECT count(*) FROM persona WHERE DTYPE = 'Peoneta' AND ACTIVO = 1) * (SELECT count(*) FROM TIPO_DOCUMENTO WHERE ENTIDAD = 'Peoneta' AND ACTIVO = 1)
+
(SELECT count(*) FROM VEHICULO WHERE ACTIVO = 1) * (SELECT count(*) FROM TIPO_DOCUMENTO WHERE ENTIDAD = 'Vehiculo' AND ACTIVO = 1 )) AS total,
--Vigentes
((SELECT COUNT(*) FROM DOC_PERS WHERE FECHA_VIGENCIA > SYSDATE +30 AND ACTIVO = 1) +
(SELECT COUNT(*) FROM DOC_VEH WHERE FECHA_VIGENCIA > SYSDATE +30 AND ACTIVO = 1))AS Vigentes,
--PorVencer
((SELECT COUNT(*) FROM DOC_PERS WHERE FECHA_VIGENCIA < SYSDATE +30 AND FECHA_VIGENCIA > SYSDATE + 15 AND ACTIVO = 1) +
(SELECT COUNT(*) FROM DOC_VEH WHERE FECHA_VIGENCIA < SYSDATE +30 AND FECHA_VIGENCIA > SYSDATE +15 AND ACTIVO = 1)) AS PorVencer,
--Criticos
((SELECT COUNT(*) FROM DOC_PERS WHERE FECHA_VIGENCIA < SYSDATE +15 AND FECHA_VIGENCIA > SYSDATE AND ACTIVO = 1) +
(SELECT COUNT(*) FROM DOC_VEH WHERE FECHA_VIGENCIA < SYSDATE +15 AND FECHA_VIGENCIA > SYSDATE AND ACTIVO = 1)) AS Criticos
FROM DUAL;
我知道如何通过将每个选择放入一个变量来对其进行排序,但我不知道如何从那里返回一行。
我正在使用 dbveaver 来编辑它。
【问题讨论】:
-
这很重要,但是 - 不幸的是 - 我完全不理解这个问题。你能简化它并再次描述问题吗?你知道,“我有 this 以及如何做 this 来获得 that” - 当然有例子吗?
-
已编辑,我想要的是把那个长查询变成一个返回相同值的函数或过程