嗨,我在尝试执行以下查询时收到此错误。有什么想法或建议吗?
错误:“在包含外部引用的聚合表达式中指定了多个列。如果要聚合的表达式包含外部引用,则该外部引用必须是表达式中唯一引用的列。”
SELECT
tb1.[Refno] [InwardRefNo], tb1.[PayeeName] [InwardPayeeName], tb1.[Description] [InwardDescription], tb1.[Amount] [ReceiptAmount],
tb1.[FullName] AS [Receipt], [InwardCenter], [InEmployee],
tb2.[Refno] [OutwardRefNo], tb2.[PayeeName] [OutwardPayeeName], tb2.[Description] [OutwardDescription], tb2.[Amount] [PaymentAmount],
tb2.[FullName] AS [Payment], [OutwardCenter], [OutEmployee], o.Opening,
COALESCE(tb1.[TransactionDate], tb2.[TransactionDate]) AS [DATE],
CAST('Jul 6 2018 2:54PM' AS DATE) AS [InDate],
CAST('Jul 6 2018 2:54PM' AS DATE) AS [OutDate]
FROM(
(SELECT ROW_NUMBER()OVER (ORDER BY [Master].[ID]) AS [InROWID], [Master].[RefNo], [Master].[PayeeName], [Master].[Description],
[VoucherType].[FullName], [Company].[FullName] [InwardCenter], MAX([Detail].[DrAmount]) [Amount], [Master].[TransactionDate],
[Info].[FirstName]+' '+[Info].[LastName] [InEmployee]
FROM [HRM].[tbl_EmployeeInfo] [Info], [FICO].[tbl_TransactionMaster] [Master]
INNER JOIN [FICO].[tbl_VoucherType] [VoucherType] ON [Master].[VoucherTypeCode] = [VoucherType].[ID]
INNER JOIN [FICO].[tbl_TransactionDetail] [Detail] ON [Detail].[TransactionCode] = [Master].[ID]
INNER JOIN [AppCNF].[tbl_OrganizationCompany] [Company] ON [Master].[CostOrProfitCenterCode] = [Company].[ID]
WHERE [Info].[ID] = [Master].[RecoveredByEmpCode] AND [Master].[VoucherCategory] LIKE '%Receipt%'
GROUP BY [Master].[ID], [Master].[RefNo], [Master].[PayeeName], [Master].[Description], [VoucherType].[FullName], [Company].[FullName],
[Master].[TransactionDate], [Info].[FirstName], [Info].[LastName]
)tb1
FULL OUTER JOIN
(SELECT ROW_NUMBER()OVER (ORDER BY [Master].[ID]) AS [OutROWID], [Master].[RefNo], [Master].[PayeeName], [Master].[Description],
[VoucherType].[FullName], [Company].[FullName] [OutwardCenter], MAX([Detail].[CrAmount]) [Amount], [Master].[TransactionDate],
[Info].[FirstName]+' '+[Info].[LastName] [OutEmployee]
FROM [HRM].[tbl_EmployeeInfo] [Info], [FICO].[tbl_TransactionMaster] [Master]
INNER JOIN [FICO].[tbl_VoucherType] [VoucherType] ON [Master].[VoucherTypeCode] = [VoucherType].[ID]
INNER JOIN [FICO].[tbl_TransactionDetail] [Detail] ON [Detail].[TransactionCode] = [Master].[ID]
INNER JOIN [AppCNF].[tbl_OrganizationCompany] [Company] ON [Master].[CostOrProfitCenterCode] = [Company].[ID]
WHERE [Info].[ID] = [Master].[RecoveredByEmpCode] AND [Master].[VoucherCategory] LIKE '%Payment%'
GROUP BY [Master].[ID], [Master].[RefNo], [Master].[PayeeName], [Master].[Description], [VoucherType].[FullName], [Company].[FullName],
[Master].[TransactionDate], [Info].[FirstName], [Info].[LastName]
) tb2 ON tb1.InRowID = tb2.OutRowID AND tb1.[TransactionDate] = tb2.[TransactionDate])
outer apply
(
select Opening = sum(case when [VoucherCategory] LIKE '%Receipt%'
then tb1.[Amount]
else -tb2.[Amount]
end)
from [FICO].[tbl_TransactionMaster] x
where x.TransactionDate < COALESCE(tb1.[TransactionDate], tb2.[TransactionDate])
) o
WHERE
COALESCE(tb1.[TransactionDate], tb2.[TransactionDate]) BETWEEN CAST('Jun 1 2018 2:54PM' AS DATE) AND CAST('Jul 6 2018 2:54PM' AS DATE)
ORDER BY [DATE]
查询的外部应用部分中存在错误。有什么建议吗?