簡體   English   中英

PL / SQL Oracle 幫助在子查詢中運行日期

[英]Pl / SQL Oracle helps to run a Date in Subquery

我怎么能得到最大值的日期,通過子查詢我不能把日期放在主查詢中,因為我必須把它添加到組中,它會給我帶來很多數據

這是代碼:

  SELECT MAX (A1.VALOR) AS VALOR,
         (SELECT sq1.FECHA
            FROM VARIABLE_VALORES_SMEC sq1
           WHERE sq1.ID_AGENTE = A1.ID_AGENTE)
            MES,                                  -- {<-- Here is the Problem}
         (SELECT CODIGO_AGENTE
            FROM AGENTES
           WHERE ID_AGENTE = A1.ID_AGENTE)
            Agentess,
         (SELECT NOMBRE_AGENTE
            FROM AGENTES
           WHERE ID_AGENTE = A1.ID_AGENTE)
            Nombre_Agente
    FROM VARIABLE_VALORES_SMEC A1
   WHERE     A1.VALOR < '1'
         AND A1.VALOR != '0'
         AND A1.ID_AGENTE IN (SELECT C1.ID_AGENTE
                                FROM VARIABLE_VALORES_SMEC C1
                               WHERE A1.FECHA = C1.FECHA)
         AND A1.ID_AGENTE IN (SELECT B1.ID_AGENTE
                                FROM AGENTES B1
                               WHERE ID_CATEGORIA_AGENTE = 'AC006')
         AND (A1.FECHA BETWEEN (ADD_MONTHS (TO_DATE ( :FECHAIN, 'MM/DD/YYYY'),
                                            -1))
                           AND (LAST_DAY (
                                   ADD_MONTHS (
                                      TO_DATE ( :FECHAIN, 'MM/DD/YYYY'),
                                      -1))))
         AND A1.ID_VARIABLE LIKE '%_calc_total_pot@%'
GROUP BY ID_AGENTE

您可以使用row_number分析 function 來獲取value最高的一條記錄並使用該記錄的fecha 使用以下子查詢:

(Select fecha from
      (SELECT sq1.FECHA, row_number() over (order by sq1.value desc nulls last) as rn
        FROM VARIABLE_VALORES_SMEC sq1
       WHERE sq1.ID_AGENTE = A1.ID_AGENTE)
Where rn = 1) MES

我是否正確您需要(fecha)以獲得最大 A1.VALOR? 如果 - 是,您可以使用以下查詢,或者如果 - 否,只需將 A1.VALOR 替換為 keep() 子句中的所需列:

  SELECT MAX (A1.VALOR) AS VALOR,
         max(A1.FECHA)keep(dense_rank first order by A1.VALOR desc) MES, -- A1.VALOR is used here as sort key, replace it with what you want
         (SELECT CODIGO_AGENTE
            FROM AGENTES
           WHERE ID_AGENTE = A1.ID_AGENTE)
            Agentess,
         (SELECT NOMBRE_AGENTE
            FROM AGENTES
           WHERE ID_AGENTE = A1.ID_AGENTE)
            Nombre_Agente
    FROM VARIABLE_VALORES_SMEC A1
   WHERE     A1.VALOR < '1'
         AND A1.VALOR != '0'
         AND A1.ID_AGENTE IN (SELECT C1.ID_AGENTE
                                FROM VARIABLE_VALORES_SMEC C1
                               WHERE A1.FECHA = C1.FECHA)
         AND A1.ID_AGENTE IN (SELECT B1.ID_AGENTE
                                FROM AGENTES B1
                               WHERE ID_CATEGORIA_AGENTE = 'AC006')
         AND (A1.FECHA BETWEEN (ADD_MONTHS (TO_DATE ( :FECHAIN, 'MM/DD/YYYY'),
                                            -1))
                           AND (LAST_DAY (
                                   ADD_MONTHS (
                                      TO_DATE ( :FECHAIN, 'MM/DD/YYYY'),
                                      -1))))
         AND A1.ID_VARIABLE LIKE '%_calc_total_pot@%'
GROUP BY ID_AGENTE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM