【发布时间】:2015-12-08 11:48:42
【问题描述】:
我已经尝试检查类似的帖子,但无法正确解决这个问题,请帮助。
此查询返回正确的数据,但更新语句抱怨,因为它说的不止
SELECT
classificationchartofaccountname,
-SUM(ISNULL(HLD.Nominal, 0)) AS 'Total'
FROM
[dbsFPM].[dbo].[rpt_Holdings] HLD
INNER JOIN
[dbsFPM].[dbo].[rpt_FundAccounts] FA ON HLD.Username = FA.Username
AND HLD.ClientPortfolioCode = FA.ClientPortfolioCode
AND FA.ClassificationChartOfAccountName = HLD.InstrumentName
WHERE
HLD.username = @username
AND FA.Username = @username
AND FA.Narration = 'IncomeStatement'
AND FA.AccountType = 'Expense'
GROUP BY
ClassificationChartOfAccountName)
返回:
classificationchartofaccountname Total
General Expenses on ZAR 17578.38
lc Audit 2014 on ZAR 6533.12
lc Trustee Fees - Other on ZAR 840.41
lc Trustee Fees-ZAR 38524.34
Management Fees-ZAR 6452680.040
Performance Fees-ZAR 175.80
我想用的update语句出错出来如下:
消息 512,第 16 级,状态 1,第 1 行
子查询返回超过 1 个值。这是不允许的,当 子查询遵循 =、!=、、>= 或当子查询用作 一个表达式。
这里是更新:
UPDATE [rpt_FundAccounts]
SET ReconNarration = 'ExpenseAnalysis_Period',
Recon = (SELECT -SUM(ISNULL(HLD.Nominal, 0))
FROM [dbo].[rpt_Holdings] HLD
INNER JOIN [dbo].[rpt_FundAccounts] FA ON HLD.Username = FA.Username
AND HLD.ClientPortfolioCode = FA.ClientPortfolioCode
AND FA.ClassificationChartOfAccountName = HLD.InstrumentName
WHERE HLD.username = @Username
AND FA.Username = @Username
AND FA.Narration = 'IncomeStatement'
AND FA.AccountType = 'Expense'
/* and ClassificationChartOfAccountName = 'Management Fees-ZAR'*/
GROUP BY ClassificationChartOfAccountName)
WHERE
username = @username
AND Narration = 'IncomeStatement'
AND AccountType = 'Expense'
/*and ClassificationChartOfAccountName = 'Management Fees-ZAR' */
问题是我想用来自[rpt_Holdings]的各自总数更新所有ClassificationChartOfAccountNames
请帮忙,对不起,我还是个初学者!
ClassificationChartOfAccountName
Bank Charge Fees on GBP
Bank_Interest Charges on ZAR
Distribution Paid
Expenses
Foreign Withholding Tax
General Expenses on EUR
General Expenses on USD
General Expenses on ZAR
lc Audit 2012 on ZAR
lc Audit 2013 Final on ZAR
lc Audit 2013 on ZAR
lc Audit 2014 on ZAR
lc Scrip - SBSA on ZAR
lc Trustee Fees - Other on ZAR
lc Trustee Fees-ZAR
Management Fees-ZAR
Performance Fees-ZAR
Realised Foreign Exchange Gain
Realised GainLoss
Realised Pull To Par
【问题讨论】:
-
标记使用的 dbms。 (看起来不像 ANSI SQL...)
-
使用更新作为 UPDATE FA
-
建议的答案只是导致无法绑定多部分标识符,如果我添加回连接,那么它看起来与我所拥有的没有什么不同。有效的方法是有一个 where 语句,其中包含每个特定 ClassificationChartofAccountName 的 where ,但这似乎是一个非常糟糕的主意,用不同的硬编码 ClassificationChartofAccountName 说 20 次相同的语句,并且也不会获取任何新的 ClassificationChartofAccountNam。所以不幸的是仍然卡住了
标签: sql sql-server tsql