我有一个查询,它从一个表中返回四个字段的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”作为TOTAL,我该如何实现?
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分: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
)