首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL选择匹配记录存在的位置以及没有匹配记录的情况。

SQL选择匹配记录存在的位置以及没有匹配记录的情况。
EN

Stack Overflow用户
提问于 2022-03-28 22:57:32
回答 1查看 65关注 0票数 0

我试图从一个表返回帐户数据,从另一个表返回金融交易日期。我的现有查询返回帐户具有匹配的金融事务时所需的所有数据,但我还需要从Account表返回记录(组),因为在帐户表中没有匹配的金融transactions...either,因为开始时没有金融事务,或者因为我只是在寻找某种类型的金融事务。

这是我现有的查询和结果。我还期望(或试图)看到每个PaymentVendor中没有集合的行。SELECT t.PaymentVendor, COUNT(t.AccountId) AS Accounts, SUM(t.TransactionAmount \* -1) AS Collections from dbo.RawTransactionData t JOIN dbo.RawAccountData a on t.AccountId = a.AccountId WHERE t.TransactionDate \>= a.AddressDate AND t.TransactionType = 'FOR' AND t.TransactionStatus = 'U' GROUP BY t.PaymentVendor

下面是我的查询是如何开始的:

代码语言:javascript
复制
SELECT t.paymentvendor, t.accountid, t.transactiondate, 
t.transactionamount, t.transactionstatus, t.transactiontype
FROM dbo.RawTransactionData t
JOIN dbo.RawAccountData a on a.accountid = t.accountid
WHERE t.TransactionType = 'FOR'
AND t.TransactionStatus = 'U'
AND a.AddressDate IS NOT NULL
AND t.TransactionDate > a.AddressDate

我希望找到一种方法来返回所有符合标准的帐户记录(即使没有匹配的交易)。

EN

回答 1

Stack Overflow用户

发布于 2022-03-28 23:32:52

在这些场景中,您可以使用左联接,左边的表是您希望包含的所有行:

代码语言:javascript
复制
SELECT t.PaymentVendor, COUNT(t.AccountId) AS Accounts, SUM(t.TransactionAmount * -1) AS Collections 
from 
   dbo.RawAccountData a 
   LEFT JOIN 
   dbo.RawTransactionData t 
   on t.AccountId = a.AccountId 
      AND  t.TransactionDate >= a.AddressDate 
      AND t.TransactionType = 'FOR' 
      AND t.TransactionStatus = 'U' 
GROUP BY t.PaymentVendor
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71654585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档