我想在一个语句中检索两个表值,例如,(示例银行报表..)
表 1:发票
SELECT ClientNo, InvoiceDate, InvoiceNo, TotalDue
FROM Invoice_TBL
WHERE ClientNo = 1
ORDER BY InvoiceDate ASC
表 2:付款
SELECT ClientNo, PaymentDate, TotalAmountPaid
FROM Payment_TBL
WHERE ClientNo = 1
ORDER BY PaymentDate ASC
问题是我如何合并两个表值并从客户端明智的日期升序检索数据
我想要像下面截图这样的结果
我是 SQL 数据库的新手。谢谢
这不完全是想要的输出,但非常接近:
查询版本 2012+:
在SQLfiddle测试。我假设你在表中有一个主键(使用
InvoiceID
和PaymentID
),我用它来 100% 确定订购(所以如果你在同一天有多个发票或付款,你总是得到相同的订单在结果中。)对于 2012 年之前的版本,有多种方法,没有一种方法像
OVER (ORDER BY ... ROWS ...)
2012 年那样有效。您可以查看 Aaron Bertrand 撰写的关于各种方法的博客文章: Best approaches for running totals – updated for SQL Server 2012。更有效的(对于 2008R2 版本和更早的版本)是 - 正如博客文章测试所示 -游标和CLR方法。以下是使用自连接的一种方式: