id vid Amount Date
a 1 10 Today
a 1 5 Yesterday
b 2 6 Today
b 2 7 Yesterday
如何獲取今天的金額大於昨天組的金額根據id和vid。日期欄是日期時間格式爲今天的日期和昨天的比較同一列中的多個值
我需要的第一行作爲結果
id vid Amount Date
a 1 10 Today
a 1 5 Yesterday
b 2 6 Today
b 2 7 Yesterday
如何獲取今天的金額大於昨天組的金額根據id和vid。日期欄是日期時間格式爲今天的日期和昨天的比較同一列中的多個值
我需要的第一行作爲結果
目前尚不清楚您可以在那裏找到哪種類型的數據,但您可以嘗試此查詢。這將返回所有昨天金額較少的所有行。這是MS SQL Server
,但ORACLE
還支持ALL
條件,所以你可以用你的表名稱替換表變量:
declare @t table(id char(1), vid int, amount int, date char(10))
insert into @t values
('a', 1, 10, 'Today'),
('a', 1, 5, 'Yesterday'),
('b', 2, 6, 'Today'),
('b', 2, 7, 'Yesterday')
select * from @t t1
where t1.date = 'Today' and
t1.amount > ALL(select t2.amount from @t t2
where t1.id = t2.id and t1.vid = t2.vid and t2.date = 'Yesterday')
這個工程。謝謝 –
如果我理解正確的話,你只是想用lag()
:
select t.*
from (select t.*,
lag(amount) over (partition by id, vid order by date) as prev_amount
from t
) t
where amount > prev_amount;
編輯你的問題,並提供所需的輸出。 –
不,你有這一行! –
如果您的數據庫支持它,請使用超前或滯後。 –