SUM

2017-07-26 7 views
0

でGROUP BYクエリでの合計数を取得するにはどうすれば、単一のテーブルから4つのフィールドの合計を返すクエリしている:SUM

SELECT 
      MPC.MedioPagoID, 
      S.Descripcion, 
      MPC.SucursalID, 
      CONVERT(VARCHAR(16), fecha,120) fecha, 
      Referencia, 
      SUM(MontoVenta), 
      SUM(MontoDevolucion), 
      SUM(MontoComision), 
      SUM(MontoAbono), 
      mp.Descripcion AS DescripcionMedioPago 
     FROM MedioPagoConciliacion MPC WITH (NOLOCK) 
      INNER JOIN Sucursal S WITH (NOLOCK) ON S.SucursalID = MPC.SucursalID 
      INNER JOIN MedioPago MP WITH (NOLOCK) ON MP.MedioPagoID = 
      MPC.MedioPagoID 
     GROUP BY 
      MPC.MedioPagoID, 
      S.Descripcion, 
      MPC.SucursalID, 
      fecha, 
      Referencia, 
      mp.Descripcion 

この最初のクエリが238行を返し、今私がする必要が同じ構造を有する第二のクエリからこの同じ値を取得する:

SELECT count(*) TOTAL 
    FROM MedioPagoConciliacion MPC WITH (NOLOCK) 
     INNER JOIN Sucursal S WITH (NOLOCK) ON S.SucursalID = MPC.SucursalID 
     INNER JOIN MedioPago MP WITH (NOLOCK) ON MP.MedioPagoID = 
    GROUP BY 
      MPC.MedioPagoID, 
      S.Descripcion, 
      MPC.SucursalID, 
      fecha, 
      Referencia, 
      mp.Descripcion 

2番目のクエリは、異なる値を持つ238件の結果を返し、私はどのように行う、TOTALとして第2のクエリからのシングル「238」を取得する必要がありますこれを達成する?

+0

私はあなたが何を期待しているか分からないので、2番目のクエリの結果を投稿できますか? – JRG

+0

これはどのSQLですか? – Eric

+0

@EricこれはSQL 2012です –

答えて

0

おそらくGROUP BYが問題の原因ですが、なぜ@@ROWCOUNTを利用しないのですか?

DECLARE @Rows int 
SELECT 
     MPC.MedioPagoID, 
     S.Descripcion, 
     MPC.SucursalID, 
     CONVERT(VARCHAR(16), fecha,120) fecha, 
     Referencia, 
     SUM(MontoVenta), 
     SUM(MontoDevolucion), 
     SUM(MontoComision), 
     SUM(MontoAbono), 
     mp.Descripcion AS DescripcionMedioPago 
    FROM MedioPagoConciliacion MPC WITH (NOLOCK) 
     INNER JOIN Sucursal S WITH (NOLOCK) ON S.SucursalID = MPC.SucursalID 
     INNER JOIN MedioPago MP WITH (NOLOCK) ON MP.MedioPagoID = 
     MPC.MedioPagoID 
    GROUP BY 
     MPC.MedioPagoID, 
     S.Descripcion, 
     MPC.SucursalID, 
     fecha, 
     Referencia, 
     mp.Descripcion 

SET @Rows = @@ROWCOUNT 

SELECT @Rows TOTAL 
+0

はい、これは私が@Aaron –

0

SQL Serverとすると、以下のクエリを試してみてください。

SELECT 
    MPC.MedioPagoID, 
    S.Descripcion, 
    MPC.SucursalID, 
    CONVERT(VARCHAR(16), fecha,120) fecha, 
    Referencia, 
    SUM(MontoVenta), 
    SUM(MontoDevolucion), 
    SUM(MontoComision), 
    SUM(MontoAbono), 
    mp.Descripcion AS DescripcionMedioPago, 
    COUNT(*) OVER() AS ROW_NUM 
FROM MedioPagoConciliacion MPC WITH (NOLOCK) 
    INNER JOIN Sucursal S WITH (NOLOCK) ON S.SucursalID = MPC.SucursalID 
    INNER JOIN MedioPago MP WITH (NOLOCK) ON MP.MedioPagoID = 
    MPC.MedioPagoID 
GROUP BY 
    MPC.MedioPagoID, 
    S.Descripcion, 
    MPC.SucursalID, 
    fecha, 
    Referencia, 
    mp.Descripcion 
0

あなたのクエリを変更せずに、あなたは合計数を得るためにあなたの2ndクエリにouterクエリを追加することができます。