我正在尝试通过使用存在于所有3个表中的列来获取某些数据,我有3个表
[Txn].[TxnPaymentResponse]
[Txn].[Txn]
[Txn].[TxnLineItem]
现在,如果我运行查询,我只能获得正确的数据userID
。
但我想从第三个表(TxnLineItem
)获取另一条信息(假设调用列X)。前两个表中不存在该列。在这种情况下,我如何执行内部联接并在查询中显示该信息?
DECLARE @CompletedTransactionSince DATETIME2(7) = '2022-09-13 00:00:00.000000'
SELECT DISTINCT
t.UserID
FROM
[Txn].[Txn] T WITH(NOLOCK)
INNER JOIN
[Txn].[TxnPaymentResponse] TPR WITH(NOLOCK) ON T.[TxnID] = TPR.[TxnID]
WHERE
TPR.[PaymentResponseType] = 'FINAL'
AND TPR.[AuthorizedAmount] > CONVERT(DECIMAL(9,3), 0)
AND (@CompletedTransactionSince IS NULL OR
T.[CreatedOn] > @CompletedTransactionSince)
我的查询结果:
用户ID
C1671FDA-70A8-4C07-BBDF-ACD06ADD145F
表3:
TxnID|StandardProductCategory
6FE0D0D0-9959-41AA-9BF0-00000003DED8|洗车
D1B0EA51-C476-488C-A140-0000C1C7D099|通用
假设我正在进行内部连接,如下所示
INNER JOIN
[Txn].[TxnLineItem] TXL WITH(NOLOCK) ON T.[TxnID] = [Txn].[TxnID],
但是我想要获取具有相同transactionID
的X列。我要显示仅具有Carwash
的UserID
。不确定是否可以编写具有内部联接的另一个子句。
1条答案
按热度按时间rsaldnfx1#
根据“我想显示仅有Carwash的用户ID”,您需要排除记录。
只需在To Query的末尾添加这些EXISTS和NOT EXISTS子句。
存在的部分是有洗车功能的过滤器用户。
Not Existes部分排除具有除洗车外的StandardProduct类别记录的用户