【问题标题】:Invalid Column Name error when attempting to use an alias Transact Sql尝试使用别名 Transact Sql 时出现无效的列名错误
【发布时间】:2016-12-14 16:00:37
【问题描述】:

我打算做的是有一个订单剩余列,这将是以下计算的结果: [orderedvalue] - [totaljobvalue]

select [orderedvalue] = sum([ordervalue]), 
       jobtype,
       [totaljobvalue] = (select sum([total value]) 
                          from job 
                          where jobType = quotetrackerorders.jobType 
                          and reference like '%40330%')
from quotetrackerorders
where quoteref like '%40330%'
group by jobtype

我试过下面的代码:

select [orderedvalue] = sum([ordervalue]), 
       jobtype,
       [totaljobvalue] = (select sum([total value]) 
                          from job 
                          where jobType = quotetrackerorders.jobType 
                          and reference like '%40330%'),
       [orderremaining] = [orderedvalue] - [totaljobvalue]
from quotetrackerorders
where quoteref like '%40330%'
group by jobtype

但是这不起作用,因为它无法将任何别名识别为列...我可以做些什么来实现以下结果:

  • JobType = 壁画
  • Orderedvalue = 311654(示例值)
  • TotalJobvalue = 3446(示例值)
  • OrderRemaining = 64654(示例值)

您知道如何让 SQL 将这些别名识别为列吗?

【问题讨论】:

    标签: sql tsql subquery


    【解决方案1】:

    考虑以下

    Select A.*
          ,SomeName = [orderedvalue] - [totaljobvalue]
     From (
            Select [orderedvalue] = sum([ordervalue])
                  , jobtype
                  , [totaljobvalue] = (select sum([total value]) 
                                       from job 
                                       where jobType = quotetrackerorders.jobType 
                                       and reference like '%40330%')
            from quotetrackerorders
            where quoteref like '%40330%'
            group by jobtype
    ) A
    

    【讨论】:

    • 这似乎有效,我需要进一步测试它。但是你能分解一下吗?我真的很感激能理解这个查询。尤其是 A.* 部分
    • @JoséFerreira 子查询完成了大部分工作。顶级查询将能够使用结果而无需重复工作
    • 酷@John Cappelletti,据我所知这个位在做什么:选择 A.* 正在选择表 A(本身)的所有列
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多