SQL:计算两个子选择列时出错

时间:2012-10-09 15:55:45

标签: sql sql-server tsql sql-server-2000

我知道这对于SQL专家来说将是另一个简单的问题,因为我确信我做错了很明显。 这完全适用于SQL Server 2000 (继承的项目!)

我有一个像

这样的查询
   SELECT (SELECT Price1 from Table1) AS 'PriceOne', 
(SELECT Price2 From Table2) AS 'PriceTwo', 
PriceTwo * PriceOne AS 'Total'

但是这会为PriceOne和PriceTwo生成无法识别的列的错误。我假设有可能以这种方式乘以列,对吗?

3 个答案:

答案 0 :(得分:1)

首先,您需要确保这些子查询始终只返回一行。现在,针对您关于列名的具体问题,您需要将它们包装在另一个SELECT上,以便像这样使用它们:

SELECT PriceOne, ProceTwo, PriceTwo * PriceOne AS 'Total'
FROM (  SELECT  (SELECT Price1 from Table1) AS 'PriceOne', 
                (SELECT Price2 From Table2) AS 'PriceTwo') AS A

答案 1 :(得分:1)

您不能在同一SELECT上下文中使用列别名。尝试:

SELECT (SELECT Price1 from Table1) AS 'PriceOne', 
(SELECT Price2 From Table2) AS 'PriceTwo', 
(SELECT Price1 from Table1) * (SELECT Price2 From Table2) AS 'Total'

或者将您的查询指定为子查询,并在外部上下文中从中进行选择:

SELECT PriceOne, PriceTwo, PriceTwo * PriceOne AS Total
FROM (SELECT (SELECT Price1 from Table1) AS 'PriceOne', 
         (SELECT Price2 From Table2) AS 'PriceTwo') x

虽然,我想知道Table1Table2是否真的只有一行,或者你真的打算做一些完全不同的事情。

答案 2 :(得分:0)

我认为你需要澄清这个问题。 Table1和Table2中有多行吗?如果是这样,你需要指定某种连接标准,我假设你不想要笛卡尔连接。

只是好奇,为什么你会增加价格?这没有意义。然后调用结果“总计” - 总计通常意味着不添加乘法。