【问题标题】:SQL: Error while calculating two subselect columnsSQL:计算两个子选择列时出错
【发布时间】:2012-10-09 15:55:44
【问题描述】:

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

我有一个类似的查询

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

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

【问题讨论】:

  • 主要是语法问题,但也存在什么关系可以将 table1 中的价格与 table2 中的价格匹配?

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


【解决方案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

【讨论】:

  • 这很完美,而且很有效。我知道这很简单!谢谢!
【解决方案2】:

您不能在同一个 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 是否真的只有一行,或者你是否真的打算做一些完全不同的事情。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 我是安全偏执狂,所以我总是用与我实际工作无关的其他表名和列“混淆”我的问题。所以,我可能在这篇文章中谈论“价格”,但实际上我在做其他事情。解决方案的核心仍然有效:-)
    猜你喜欢
    • 1970-01-01
    • 2018-11-26
    • 2023-03-25
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2020-03-08
    相关资源
    最近更新 更多