在 SQL Server 2008 中,我尝试运行以下计算,但出现错误
消息 207,级别 16,状态 1,第 11
行列名称“Rpt1”无效。
消息 207,级别 16,状态 1,第 11 行
无效的列名称“Rpt2”。
这是我要执行的语法。
声明@saleID varchar(100),@totalsales int
Set @totalsales = (Select COUNT(numsales)
FROM OPENQUERY(444.222.333.123, 'Select
numsales, saleID
FROM saledate')
WHERE saleID = @saleID)
Select
Rpt1 = count(case when empID = '1931' Then 1 else 0 end)
,Rpt2 = count(case when empID = '1831' Then 1 else 0 end)
,Balance = @totalsales-Rpt1-Rpt2
From totalsaleinfo
Where saleid = @saleid
另一种方法是您可以将查询分层为子查询,这样您就可以捕获所有结果,就像这样。此外,您很可能想使用“sum”而不是“count”。
您需要将 rpt1 和 rpt2 存储为变量,然后从总计中提取子轨道,而不是作为别名。
或执行:
其中 saleid = @saleid