使用 SQL Server 2005/2008 和此查询:
DECLARE @FromDate DATETIME, @Todate DATETIME
SET @FromDate = '1/1/2012'
SET @Todate = '1/1/2013'
SELECT
CASE WHEN (GROUPING(s.storeid)=1) THEN 'Total' ELSE s.storeid END AS Store,
CAST(SUM(p.amount) AS DECIMAL(12,2)) AS Paid,
CAST((SELECT
TOP 1 s.TRSDate
FROM
RPTrs s,
rpPay p
WHERE
s.StoreID = p.StoreID AND
s.ReceiptNO = p.ReceiptNo
ORDER BY
s.TRSDate DESC) AS DATETIME) AS LastTransaction
FROM
rptrs s, rppay p
WHERE
s.ReceiptNO = p.ReceiptNo AND
s.StoreID = p.StoreID AND
s.TRSDate >= @FromDate AND
s.TRSDate <= @Todate
GROUP BY
s.StoreID
WITH ROLLUP
我得到这个输出:
它为 Store 01 添加了正确的日期,但没有为 Store 02 添加正确的日期,我希望 Total 行中没有任何内容。
预期结果 :
| Store | Paid | LastTransaction
-----------------------------------------------
1 | 01 | 59490.05 | 2013-03-06 00:00:00.000
2 | 02 | 238.15 | 2012-12-03 00:00:00.000
3 | Total | 59728.20 |
情况。此查询返回每个商店的总金额和总计。除此之外,我现在需要添加的是显示的商店中发生的最后一笔交易。由于日期范围介于 2012 年 1 月 1 日和 2013 年 1 月 1 日之间,因此商店 2 中发生的最后一笔交易是预期结果中的交易。商店 1 在另一个时间进行了最后一笔交易。
第一个表是 RPTrs,第二个是 rpPay
问题 - 我如何获得预期的结果?