我有2张桌子。一个具有保持静态的原始量。第二个表格中列出了一段时间内应用的部分金额与第一个表格中的原始金额。
数据库表:
***memotable***
ID [primary, unique]
Amount (Orginal Amount)
***transtable***
ID [many IDs in transtable to single ID in memotable]
AmountUsed (amount applied)
ApplyDate (date applied)
我想在一个选项中找到自上周以来使用的ID,金额(ApplyDate> 2011-04-21),用于约会的金额。
结果中应该出现的唯一行是自上周开始使用金额时(ApplyDate> 2011-04-21)。
我一直试图获得迄今为止所用金额的总和,因为这需要包括在ApplyDate>之外的AmountUsed值。 2011-04-21
答案 0 :(得分:2)
在这种情况下可以避免子选择:
SELECT
ID,
AmountUsedSinceLastWeek = SUM(CASE WHEN ApplyDate > '4/21/2011' THEN AmountUsed END)
AmountUsedToDate = SUM(AmountUsed)
FROM TransTable
GROUP BY ID
答案 1 :(得分:1)
由于您希望将其限制为自上周以来发生的行,但又想包括迄今为止的总数,我认为最有效的方法是使用子选择......
SELECT
lastWeek.ID,
lastWeek.AmountUsedSinceLastWeek,
toDate.AmountUsedToDate
FROM
(
SELECT
ID,
SUM(AmountUsed) AS AmountUsedSinceLastWeek
FROM TransTable
WHERE ApplyDate > '4/21/2011'
GROUP BY ID
) lastWeek JOIN
(
SELECT
ID,
SUM(AmountUsed) AS AmountUsedToDate
FROM TransTable
GROUP BY ID
) toDate ON lastWeek.ID = toDate.ID