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 で、2 番目のテーブルは rpPay です
質問 - 期待される結果を得るにはどうすればよいですか?