我的表中有一堆列:
我尝试做的是查找最新的TransactionDate并获取TransactionValue(这里的事情是最新值可能是负数,所以我需要将其转换为正数)。我实际上正在使用Access中的报表,但我一直在使用SQL来使这个查询正常工作。
这是我的疑问:
SELECT
TransactionID, TransactionName, Max(abs(TransactionValue)) AS
HighestPrice, MAX(TransactionDate) AS LatestDate
FROM tblTransactionRecords
WHERE TransactionQTY<>0
ORDER BY TransactionName
但这并没有给我这些信息。它只获取该列的MAX值,而不是获取TransactionDate最新的Max Value。
答案 0 :(得分:1)
您应该在GROUP BY
和WHERE
之间添加ORDER BY
语句,指明您要分组的列。
答案 1 :(得分:1)
寻找最新的TransactionDate并接受它 TransactionValue(这里的事情是最新值可能是 负数,所以我需要将其转换为正数)
&LT; =&GT;
获取最新TransactionDate的TransactionValue的绝对值
&LT; =&GT;
SELECT abs(TransactionValue)
FROM tblTransactionRecords
WHERE TransactionDate = Max(TransactionDate)
答案 2 :(得分:1)
假设可以存在多个具有相同 TransactionDate 的记录,请按日期过滤并仅保留最高值:
SELECT TOP 1
TransactionID, TransactionName, abs(TransactionValue) AS HighestPrice, TransactionDate
FROM tblTransactionRecords
WHERE TransactionDate=MAX(TransactionDate)
ORDER BY abs(TransactionValue) DESC
答案 3 :(得分:1)
尝试使用Having
子句
SELECT
TransactionID, TransactionName, Max(abs(TransactionValue)) AS
HighestPrice, MAX(TransactionDate) AS LatestDate
FROM tblTransactionRecords
GROUP BY TransactionID
Having TransactionDate = MAX(TransactionDate) and TransactionQTY<>0