我正在尝试用html制作一个“销售业绩”表。 这是查询:
select DR.ACCNO, DR.NAME, DR.X_MONTHLYTARGET, DR.AGEDBAL0, DR.LASTMONTH, DR.MONTHVAL,
(select SUM(ASI.SalesValueTaxExclusive)
from dbo.DR_ACCS DR
inner join dbo.Analytics_SaleInvoice ASI on DR.ACCNO = ASI.AccountNumberAnalysis
where ASI.PeriodID = 229 and DR.X_TOPCUSTOMER = 'Y'
group by DR.ACCNO) as nov
from dbo.DR_ACCS DR
where X_TOPCUSTOMER = 'Y'
group by DR.ACCNO, DR.NAME, DR.X_MONTHLYTARGET, DR.AGEDBAL0, DR.LASTMONTH, DR.MONTHVAL
超过1个结果只是摔倒了。 我试图制作其他帖子的头/尾,但我迷路了。
任何帮助表示感谢。
答案 0 :(得分:1)
问题是这个子查询:
(select SUM(ASI.SalesValueTaxExclusive)
from dbo.DR_ACCS DR inner join
dbo.Analytics_SaleInvoice ASI
on DR.ACCNO = ASI.AccountNumberAnalysis
where ASI.PeriodID = 229 and DR.X_TOPCUSTOMER = 'Y'
group by DR.ACCNO
-^
) as nov
如突出显示的那样,问题是group by
。相反,您需要一个相关的子查询:
(select SUM(ASI.SalesValueTaxExclusive)
from dbo.Analytics_SaleInvoice ASI
where DR.ACCNO = ASI.AccountNumberAnalysis and
ASI.PeriodID = 229 and DR.X_TOPCUSTOMER = 'Y'
) as nov
这将删除子查询中对DR_ACCS
的不必要的表引用。所以,现在条件引用了外部查询中的表。在这种情况下,您不需要group by
子句。子查询一次只聚合一个帐户。
编辑:
此完整查询应该有效:
select DR.ACCNO, DR.NAME, DR.X_MONTHLYTARGET, DR.AGEDBAL0, DR.LASTMONTH, DR.MONTHVAL,
(select SUM(ASI.SalesValueTaxExclusive)
from dbo.Analytics_SaleInvoice ASI
where DR.ACCNO = ASI.AccountNumberAnalysis and
ASI.PeriodID = 229 and
) as nov
from dbo.DR_ACCS DR
where X_TOPCUSTOMER = 'Y'
group by DR.ACCNO, DR.NAME, DR.X_MONTHLYTARGET, DR.AGEDBAL0, DR.LASTMONTH, DR.MONTHVAL;
条件DR.X_TOPCUSTOMER = 'Y'
在子查询中是多余的,所以我将其删除了。
答案 1 :(得分:1)
您在子查询中使用group by。子查询不应返回多行。如果从子查询中删除group by子句,它应该可以工作。
答案 2 :(得分:0)
这清楚地表明由于
而从此查询返回多行 (select SUM(ASI.SalesValueTaxExclusive)
from dbo.DR_ACCS DR
inner join dbo.Analytics_SaleInvoice ASI on DR.ACCNO = ASI.AccountNumberAnalysis
where ASI.PeriodID = 229 and DR.X_TOPCUSTOMER = 'Y'
group by DR.ACCNO) as nov