聚合表达式中指定了多列

时间:2018-07-06 13:00:01

标签: sql-server

嗨,我在尝试执行以下查询时收到此错误。有什么想法或建议吗?

错误:“在包含外部引用的聚合表达式中指定了多个列。如果要聚合的表达式包含外部引用,则该外部引用必须是表达式中唯一引用的列。”

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]

查询的外部应用部分中存在错误。有什么建议吗?

0 个答案:

没有答案