2017-07-26 28 views
0

我已經從一個單一的表返回四個字段的總和查詢:如何獲得在A組總數BY查詢與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 

第二查詢返回238個結果有着不同的價值觀,我需要從第二個查詢作爲總得到一個「238」,我該怎麼辦做到這一點?

+0

你可以發佈第二次查詢的結果,因爲我並不清楚你有什麼期待? – 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

不修改您的查詢,您可以在outer查詢添加到您的2nd查詢以獲得總計數。

SELECT COUNT(*) 
FROM (
    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 
    )