我在两个不同的数据库(SQL Server和Oracle)中有表AGR_IMP_TOTAL_ACT
和TIPOACTIVO
AGR_IMP_TOTAL_ACT
:
-----------------------------------------------------------------------------
|id_activo|impacto_Total|id_Dimension|riesgo_Total|version_jpa|id_TipoActivo|
|---------|-------------|------------|------------|-----------|-------------|
| 3 | 0 | 1 | 0 | 0 | 1 |
| 3 | 10000 | 2 | 1000 | 1 | 1 |
| 3 | 2000 | 3 | 0 | 1 | 1 |
| 3 | 1000 | 4 | 550 | 0 | 1 |
| 3 | 125 | 5 | 500 | 0 | 1 |
-----------------------------------------------------------------------------
TIPOACTIVO
:
------------------------
|id_tipoActivo| nombre |
|-------------|--------|
| 1 | algo |
------------------------
目前,我使用此查询使用所有维度(1000 + 550 + 500 = 2550)以id_activo
的总和提取riesgo_Total
3。
现在我需要提取所有维度的总和和sum(riesgo_Total)
以及所有维度,但所有维度都在同一个查询中。
直到今天我才使用这些查询:
// Query to get all riesgo_total (of all dimensions).
SELECT T.ID_TIPOACTIVO, TA.NOMBRE, T.ID_ACTIVO, SUM(RIESGO_TOTAL) AS RIESGO_TOTAL
FROM AGR_IMP_TOTAL_ACT T JOIN TIPO_ACTIVO TA ON (T.ID_TIPOACTIVO = TA.ID_TIPOACTIVO)
WHERE RIESGO_TOTAL>0
GROUP BY T.ID_TIPOACTIVO, TA.NOMBRE, T.ID_ACTIVO
ORDER BY RIESGO_TOTAL DESC
// Query to get riesgo_total of id_dimension = 1.
SELECT T.ID_TIPOACTIVO, TA.NOMBRE, T.ID_ACTIVO, SUM(RIESGO_TOTAL) AS RIESGO_TOTAL
FROM AGR_IMP_TOTAL_ACT T JOIN TIPO_ACTIVO TA ON (T.ID_TIPOACTIVO = TA.ID_TIPOACTIVO)
WHERE RIESGO_TOTAL>0 AND ID_DIMENSION = '1'
GROUP BY T.ID_TIPOACTIVO, TA.NOMBRE, T.ID_ACTIVO
ORDER BY RIESGO_TOTAL DESC
如何获得像
这样的结果AGR_IMP_TOTAL_ACT = T
TIPOACTIVO = TA
|T.ID_ACTIVO | TA.NOMBRE | Riesgo_total (all dimension) | riesgo_total (id_dimension = 1) | riesgo_total (id_dimension = 2) | riesgo_total (id_dimension = 3) | riesgo_total (id_dimension = 4) | riesgo_total (id_dimension = 5) |
|------------|-----------|------------------------------|---------------------------------|---------------------------------|---------------------------------|---------------------------------|----------------------------------|
| 3 | algo | 2550 | 0 | 1000 | 0 | 550 | 500 |
提前谢谢。
答案 0 :(得分:2)
您可以在总和中使用案例陈述来获取各个维度的总和
SELECT T.ID_TIPOACTIVO, TA.NOMBRE, T.ID_ACTIVO, SUM(RIESGO_TOTAL) AS RIESGO_TOTAL,
SUM(CASE WHEN id_Dimension = 1 THEN riesgo_Total ELSE 0 END) AS RIESGO_TOTAL_1,
SUM(CASE WHEN id_Dimension = 2 THEN riesgo_Total ELSE 0 END) AS RIESGO_TOTAL_2,
SUM(CASE WHEN id_Dimension = 3 THEN riesgo_Total ELSE 0 END) AS RIESGO_TOTAL_3,
SUM(CASE WHEN id_Dimension = 4 THEN riesgo_Total ELSE 0 END) AS RIESGO_TOTAL_4,
SUM(CASE WHEN id_Dimension = 5 THEN riesgo_Total ELSE 0 END) AS RIESGO_TOTAL_5
FROM AGR_IMP_TOTAL_ACT T JOIN TIPO_ACTIVO TA ON (T.ID_TIPOACTIVO = TA.ID_TIPOACTIVO)
WHERE RIESGO_TOTAL>0
GROUP BY T.ID_TIPOACTIVO, TA.NOMBRE, T.ID_ACTIVO
ORDER BY RIESGO_TOTAL DESC