我知道这对于SQL专家来说将是另一个简单的问题,因为我确信我做错了很明显。 这完全适用于SQL Server 2000 (继承的项目!)
我有一个像
这样的查询 SELECT (SELECT Price1 from Table1) AS 'PriceOne',
(SELECT Price2 From Table2) AS 'PriceTwo',
PriceTwo * PriceOne AS 'Total'
但是这会为PriceOne和PriceTwo生成无法识别的列的错误。我假设有可能以这种方式乘以列,对吗?
答案 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
虽然,我想知道Table1
和Table2
是否真的只有一行,或者你真的打算做一些完全不同的事情。
答案 2 :(得分:0)
我认为你需要澄清这个问题。 Table1和Table2中有多行吗?如果是这样,你需要指定某种连接标准,我假设你不想要笛卡尔连接。
只是好奇,为什么你会增加价格?这没有意义。然后调用结果“总计” - 总计通常意味着不添加乘法。