将查询2的结果插入查询1,但查询2没有键

时间:2015-10-21 19:05:54

标签: sql sql-server tsql

使用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

2 个答案:

答案 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