最新日期使用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
我得到這樣的輸出:
它添加了正確的日期爲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
問題 - 如何得到預期的結果?
如果你的範圍是從1/1/2012 - > 2013年1月1日,這是爲什麼3月6日(或者是6月3日?)2013即將到來回到結果?難道你不希望從2012年的數據? – 2013-03-08 21:47:49
另外,如果您顯示一些示例數據,以便我們知道這些結果是如何派生的,則可能會爲我們提供足夠的信息來編寫更好的查詢。我們很難解決這個問題,因爲我們知道你所嘗試的是什麼,你得到了什麼,但不知道它來自哪裏。 – 2013-03-08 21:48:51
@AaronBertrand - 更新後從表樣本數據 – JohnZ 2013-03-08 21:52:10