2016-01-12 93 views
0

我有一堆AA列在我的表:尋求幫助的SQL查詢?

  • 的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的最大值。

+0

那麼你有多個相同的交易ID條目我你的桌子?或者你只想從上述查詢中只選擇一個最新交易日期的行? – Sachin

+0

是的我有一個TransactionID列有大約30個不同的ID和每個ID的許多實例。我的最終目標是爲每個具有最高TransactionValue的不同ID分配一個ID。 ID = 177 TransValue = $ 200.00,ID = 188 TransValue = $ 500。等等。 – barry17

回答

1

您應該在WHEREORDER BY之間添加一條GROUP BY聲明,指出您想要對哪些列進行分組。

1

找最近的TransactionDate並採取 TransactionValue(這裏的事情是,最新值可能是一個 負數,所以我需要將其轉換爲正)

< = >

採取TransactionValue的絕對值爲最近TransactionDate

< =>

SELECT abs(TransactionValue) 
FROM tblTransactionRecords 
WHERE TransactionDate = Max(TransactionDate) 
1

假設可以有多個記錄具有相同TransactionDate,濾波器按日期和僅保持最高值:

SELECT TOP 1 
TransactionID, TransactionName, abs(TransactionValue) AS HighestPrice, TransactionDate 
FROM tblTransactionRecords 
WHERE TransactionDate=MAX(TransactionDate) 
ORDER BY abs(TransactionValue) DESC 
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