使用T-SQL,我有一个查询返回有关表中事务的数据。对于每个事务,都有一个事务日期(事务发生的日期),以及其他数据列。我们只想说伪代码是......
Select TransactionDate, LoanNumber
From TransactionsTable
现在在一个单独的查询中,我只是查询同一个表,但只选择MAX
交易日期。例如。在伪代码......
Select MAX(TransactionDate) as DataDate
From TransactionsTable
我正在尝试将此MAX(TransactionDate)
附加到原始查询中的每条记录。这样做的原因是我可以拥有 DataCurrentAsOf 或 DataDate 字段,或类似的东西。此外,GETDATE()
将无效,因为MAX
交易日期变化很大。
理想的伪代码会读取类似......
Select a.TransactionDate, b.DataDate, a.LoanNumber
From TransactionsTable a
Left Join
(
Select MAX(TransactionDate) as DataDate
From TransactionsTable
) b on EVERYWHERE
答案 0 :(得分:3)
只需使用窗口功能:
Select tt.TransactionDate, tt.LoanNumber,
max(tt.TransactionDate) over () as DataDate
From TransactionsTable tt;
如果您省略on
子句并将left join
替换为cross join
,则您的伪代码应该有效。但是,窗口函数更简洁,通常更快。
答案 1 :(得分:0)
我不确定是否理解您的查询,但会根据我得到的结果回答。您只需执行以下语句即可实现:
SELECT @maxTransactionDate = MAX(transactiondate) from TransactionsTable
select LoanNumber, TransactionDATE, @maxTransactionDate AS [Max Transaction Date] from TransactionsTable