Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server ITH)@user1805523否没有使用行号()。但是你可以在没有rownumber的情况下,我会用另一个没有ROW_NUMBER()@user1805523的解决方案更新我的答案是的,你这么说了,但是你能解释一下原因吗?我得到了这个错误:Msg 815_Sql Server_Row Number - Fatal编程技术网

Sql server ITH)@user1805523否没有使用行号()。但是你可以在没有rownumber的情况下,我会用另一个没有ROW_NUMBER()@user1805523的解决方案更新我的答案是的,你这么说了,但是你能解释一下原因吗?我得到了这个错误:Msg 815

Sql server ITH)@user1805523否没有使用行号()。但是你可以在没有rownumber的情况下,我会用另一个没有ROW_NUMBER()@user1805523的解决方案更新我的答案是的,你这么说了,但是你能解释一下原因吗?我得到了这个错误:Msg 815,sql-server,row-number,Sql Server,Row Number,ITH)@user1805523否没有使用行号()。但是你可以在没有rownumber的情况下,我会用另一个没有ROW_NUMBER()@user1805523的解决方案更新我的答案是的,你这么说了,但是你能解释一下原因吗?我得到了这个错误:Msg 8155,16级,状态2,第1行Aucun nom de colonne n'aétéspécifi pour la colonne 3 de'CTE'。@user1805523它说有一列您在CTE中选择而没有名称,在CTE中选择的每一列都必须命名。


ITH)@user1805523否没有使用
行号()。但是你可以在没有rownumber的情况下,我会用另一个没有
ROW_NUMBER()
@user1805523的解决方案更新我的答案是的,你这么说了,但是你能解释一下原因吗?我得到了这个错误:Msg 8155,16级,状态2,第1行Aucun nom de colonne n'aétéspécifi pour la colonne 3 de'CTE'。@user1805523它说有一列您在
CTE
中选择而没有名称,在CTE中选择的每一列都必须命名。请发布您尝试的完整查询。我想问的是,是否有一种解决方案允许在where子句中直接使用别名“classement”(即不使用WITH)@user1805523不,没有使用
行号()。但是你可以在没有rownumber的情况下,我会用另一种没有
ROW_NUMBER()
@user1805523的解决方案更新我的答案是的,你说过了,但是你能解释一下原因吗?
select   ROW_NUMBER() OVER ( PARTITION BY codtiers ORDER BY case when isnull(cumulapport, 0) > isnull(cumulretrait, 0) then cumulapport
 else cumulretrait
end DESC ) AS classement,
                    codTiers
           from     dbo.TiersComptesLocal 
           group by codTiers
classement  |  codTiers  
-------------------------
    1       |  1XXXXX
    2       |  1XXXXX
    1       |  1YYXXX
    2       |  1YYXXX
    3       |  1YYXXX
    1       |  1XXXYY
classement  |  codTiers  
-------------------------
    1       |  1XXXXX
    1       |  1YYXXX
    1       |  1XXXYY
select   ROW_NUMBER() OVER ( PARTITION BY tcl_codtiers ORDER BY case when isnull(cumulapport, 0) > isnull(cumulretrait, 0) then cumulapport
                                                                                                                else cumulretrait
                                                                                                           end DESC ) AS classement,

                                        TCL_CodTiers,
                                        'le montant max des ' + Senscumul + ' ( '
                        + convert(varchar(50), '') + ' € ) du tiers titulaire '
                        + TCL_CodTiers + ' ( ' + ''
                        + ' ) est supérieur au seuil fixé dans l''alerte : '
                        + '75000'

                               from     dbo.CLI_TCL_TiersComptesLocal
                                        INNER JOIN dbo.CLI_GCO_GeneriquesComptes ON TCL_CodTiers = GCO_CodTiersPrincipal
                                                                                    AND TCL_NumLien IN ( 0, 1 )
                                                                    inner join ( select TCL_CodTiers CodTiers,
                                                                sum(case when ESO_MntValoRetenuEnEuros > 0
                                                                         then ESO_MntValoRetenuEnEuros
                                                                         else 0
                                                                    end) cumulapport,
                                                                sum(case when ESO_MntValoRetenuEnEuros < 0
                                                                         then abs(ESO_MntValoRetenuEnEuros)
                                                                         else 0
                                                                    end) cumulretrait, 
                                                                      case when isnull(  sum(case when ESO_MntValoRetenuEnEuros > 0
                                                                         then ESO_MntValoRetenuEnEuros
                                                                         else 0
                                                                    end), 0) > isnull( sum(case when ESO_MntValoRetenuEnEuros < 0
                                                                         then abs(ESO_MntValoRetenuEnEuros)
                                                                         else 0
                                                                    end), 0)
                                                 then 'Apports'
                                                 else 'Retraits'
                                            end as Senscumul
                                                         from   CRO_ESO_EntreeSortie
                                                                inner join CLI_TCL_TiersComptesLocal on TCL_CodCompte = ESO_CodCompte
                                                                                                        and TCL_NumLien in ( 0, 1 )
                                                         group by TCL_CodTiers
                                                         having sum(case when ESO_MntValoRetenuEnEuros > 0
                                                                         then ESO_MntValoRetenuEnEuros
                                                                         else 0
                                                                    end) > 75000
                                                                or sum(case when ESO_MntValoRetenuEnEuros < 0
                                                                            then abs(ESO_MntValoRetenuEnEuros)
                                                                            else 0
                                                                       end) > 75000
                                                       ) surveillance on GCO_CodTiersPrincipal = CodTiers
WITH CTE
AS
(
    SELECT
      ROW_NUMBER() OVER (PARTITION BY codtiers 
                         ORDER BY CASE 
                                    WHEN ISNULL(cumulapport, 0) >
                                         ISNULL(cumulretrait, 0) THEN cumulapport
                                  ELSE cumulretrait
                                  END DESC) AS classement,
                        codTiers
    FROM dbo.TiersComptesLocal 
) 
SELECT * 
FROM CTE
WHERE classement = 1;
    SELECT
      codtiers,
      MAX(CASE 
            WHEN ISNULL(cumulapport, 0) >
                 ISNULL(cumulretrait, 0) THEN cumulapport
            ELSE cumulretrait
            END DESC) AS classement
    FROM dbo.TiersComptesLocal 
    GROUP BY codtiers;
SELECT *
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY codtiers 
                                ORDER BY CASE WHEN ISNULL(cumulapport, 0)>ISNULL(cumulretrait, 0) 
                                              THEN cumulapport ELSE cumulretrait END DESC) AS classement,
             codTiers
        FROM dbo.TiersComptesLocal 
        GROUP BY codTiers) A
WHERE classement = 1
SELECT classement, codtiers
FROM 
(
  SELECT 
    classement = ROW_NUMBER() OVER (PARTITION BY codtiers 
      ORDER BY CASE WHEN ISNULL(cumulapport, 0) > ISNULL(cumulretrait, 0) 
      THEN cumulapport ELSE cumulretrait END DESC),
    codTiers
  FROM dbo.TiersComptesLocal 
) AS x
WHERE classement = 1;