0

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

我有一个像这样的查询

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

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

4

3 回答 3

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
于 2012-10-09T15:58:16.570 回答
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,或者你是否真的打算做一些完全不同的事情。

于 2012-10-09T15:58:24.240 回答
0

我认为你需要澄清这个问题。Table1 和 Table2 中是否有不止一行?如果是这样,您需要指定某种连接条件,我假设您不想要笛卡尔连接。

只是好奇,你为什么要乘以价格?那没有意义。然后将结果称为“总计”——总计通常意味着相加而不是相乘。

于 2012-10-09T16:03:45.067 回答