SQL查询寻求帮助?

时间:2016-01-12 16:22:13

标签: sql sql-server

我的表中有一堆列:

  • 的TransactionID
  • TransactionName
  • TransactionDate
  • TransactionValue
  • TransactionQTY

我尝试做的是查找最新的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。

4 个答案:

答案 0 :(得分:1)

您应该在GROUP BYWHERE之间添加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