选择最大值并注明时间(小时)

问题描述 投票:0回答:1

当我运行此脚本时:

WITH MaxValues AS 
(
    SELECT 
        Par.CodEst AS 'BNA',
        Est.GLS_ESTACION AS 'ESTACION',
        Par.FecMed,
        DAY(Par.FecMed) AS 'DIA',
        MONTH(Par.FecMed) AS 'MES',
        YEAR(Par.FecMed) AS 'AÑO',
        Par.Medici,
        ROUND(DBO.Calcula_CaudalJV(Par.Medici, Par.FecMed, Par.CodEst), 3) AS 'CAUDAL_MAX'
    FROM 
        RDDS00.dbo.SCBD0200 Par
    JOIN 
        TG_ESTACION_BNA Est
        ON Par.CodEst = Est.COD_ESTACION + '-' + Est.DIG_ESTACION 
            WHERE 
        Est.GLS_ESTACION IN ('RIO GRANDE EN LAS RAMADAS', 'RIO TASCADERO EN DESEMBOCADURA', 'RIO GRANDE EN CUYANO')
        and year(Par.FecMed) = '2024'
        and month(Par.FecMed) = '06'
)
-- Here you can write your main query that uses the MaxValues CTE
SELECT 
    BNA,
    ESTACION,
    DIA,
    MES,
    AÑO,
    MAX(Medici) AS 'ALTURA LM MAX (m)',
    MAX(CAUDAL_MAX) AS 'CAUDAL MAX (m3/s)',
    (SELECT FecMed 
     FROM MaxValues AS mv 
     WHERE mv.BNA = mv_inner.BNA 
       AND mv.CAUDAL_MAX = mv_inner.CAUDAL_MAX
       AND mv.FecMed = mv_inner.FecMed) AS 'HORA MAX CAUDAL'
FROM 
    MaxValues mv_inner
GROUP BY 
    BNA,
    ESTACION,
    DIA,
    MES,
    AÑO
ORDER BY 
    AÑO, MES, DIA;

要解决此错误:

“消息 8120,第 16 层,状态 1,第 34 行 La columna 'MaxValues.CAUDAL_MAX' 是有效的选择列表 没有 está contenida en una función de agregado ni en la cláusula GROUP 通过。

消息 8120,级别 16,状态 1,第 35 行 La 列“MaxValues.FecMed”de 有效的选择列表,因为没有任何内容 función de agregado ni en la cláusula GROUP BY。”

翻译(谷歌翻译)

“消息 8120,级别 16,状态 1,第 34 行 选择列表中的列“MaxValues.CAUDAL_MAX”无效,因为它不包含在聚合函数或 GROUP BY 子句中。

消息 8120,级别 16,状态 1,第 35 行 选择列表中的列“MaxValues.FecMed”无效,因为它未包含在聚合函数或 GROUP BY 子句中。”

我需要知道最大值“Medici”和最大值“CAUDAL_MAX”(这是一个存储过程),并且我需要知道“HORA MAX CAUDAL”是什么时间。

sql-server stored-procedures max group hour
1个回答
0
投票

问题出在

mv_inner.CAUDAL_MAX
子选择中对
mv_inner.FecMed
HORA MAX CAUDAL
的引用。也许你需要将其替换为:

    (SELECT FecMed 
     FROM MaxValues AS mv 
     WHERE mv.BNA = mv_inner.BNA 
       AND mv.CAUDAL_MAX = MAX(mv_inner.CAUDAL_MAX)
       AND mv.FecMed = MAX(mv_inner.FecMed)) AS 'HORA MAX CAUDAL'

如果这不是您需要的解决方案,您需要更好地解释

HORA MAX CAUDAL
值预计代表什么。可能需要样本数据和预期结果。

© www.soinside.com 2019 - 2024. All rights reserved.