代码之家  ›  专栏  ›  技术社区  ›  Alexander

列l’在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中,但它是

  •  1
  • Alexander  · 技术社区  · 8 年前

    我有一个sql子查询,它执行以下操作-它根据列的过度分区计算一些和。在那之后,我想把表内部连接起来,这样就可以得到日期之间的差异。 它显示的问题是:

    “Tblfinasijskipodaci”列。DatumVal'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

    也许我加入错地方了?

    SELECT P2.FinID, P2.Firma, P2.BrojDok, P2.DatumVal,P2.Saldo ,P2.SaldoTotal2,
    IIF(P2.SaldoTotal2<0,0,IIF(P2.SaldoTotal2<1,(DATEDIFF(DAY,P2.DatumVal, b.DatumVal)),0))
    AS NumberOfDays
    FROM
       (
         SELECT P1.FinID, P1.Firma,P1.BrojDok,P1.DatumVal,P1.Saldo,P1.SaldoTotal,
         IIF(P1.SaldoTotal<0,0,IIF(P1.SaldoTotal>1,1,0)) AS SaldoTotal1,
         IIF(P1.SaldoTotal<0,0,IIF(P1.SaldoTotal<1,0,1)) AS SaldoTotal2
     FROM 
         (
           SELECT P.FinID,P.Firma,P.BrojDok,P.DatumVal,P.Saldo ,
           SUM(Saldo) OVER (PARTITION BY BrojDok ORDER BY FinID) AS SaldoTotal
       FROM
           (
            SELECT a.FinID,  a.Firma, a.Konto,a.NazivKonta, a.NazFirme, a.BrojDok,
            a.DatumVal,a.Valuta,
            Sum(IIf(a.[Konto] Like '2%',a.[Duguje] -a.[Potrazuje],a.[Potrazuje] -a.[Duguje]))
            AS Saldo
            FROM tblFinansijskiPodaci a WHERE a.Firma = 1 AND a.Konto = 2040
            AND a.Partner = 1137
            GROUP BY a.FinID,a.Firma,a.NazFirme,a.Konto,a.NazivKonta,a.BrojDok,
            a.DatumVal,a.Valuta,a.Duguje,a.Potrazuje
           ) AS P
      GROUP BY FinID,Firma,BrojDok,Saldo,DatumVal
         ) AS P1
     GROUP BY P1.FinID,P1.Firma,P1.BrojDok,P1.DatumVal,P1.Saldo,P1.SaldoTotal
    ) AS P2 
     INNER JOIN tblFinansijskiPodaci b ON b.BrojDok=P2.BrojDok
     GROUP BY P2.FinID,P2.Firma,P2.BrojDok,P2.Saldo,P2.SaldoTotal,P2.SaldoTotal1,P2.SaldoTotal2,P2.DatumVal
            ORDER BY BrojDok
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   NikNik    8 年前

    尝试添加 b.DatumVal 在你最后一次 GROUP BY 条款