这听起来像是一个愚蠢的问题 - 如果之前已经回答过这个问题(几乎可以肯定),我深表歉意,但我无法通过搜索找到答案。
我有一个查询,它以不同的方式将表中的值聚合为子查询,用于不同的列,例如给定日期的事务、上个月、前 6 个月、之前、之后的事务。我将主表别名为 tx,然后子查询别名为 tx1
SELECT
tr.transaction_value
,ISNULL(
(SELECT SUM(tr1.transaction_value) FROM [MyDB].[dbo].[Transactions] tr1
WHERE tr1.Client_Ref = tr.Client_Ref),0) AND tr1.Transaction_Date > tr.Transaction_Date
),0) as 'Future_Transactions'
,ISNULL(
(SELECT SUM(tr1.transaction_value) FROM [MyDB].[dbo].[Transactions] tr1
WHERE tr1.Client_Ref = tr.Client_Ref),0) AND tr1.Transaction_Date < tr.Transaction_Date
),0) as 'Prior_Transactions'
FROM [MyDB].[dbo].[Transactions] tr
我想知道,如果我有 7 个带有子查询的列,在子查询中定义表 7 次,是否可以更好(更有效,更易读)在主表查询上创建 tx1 作为 INNER JOIN 而不是重新创建它在每个子查询中,如果是这样,我将如何编码 WHERE 子句?谢谢 :o)