【问题标题】:SQL 'as' Statement IssueSQL 'as' 语句问题
【发布时间】:2018-02-27 15:56:23
【问题描述】:

我在使用 SQL 'as' 语句时遇到了困难。根据我在 YouTube 上阅读和看到的内容,'as' 或 alias 命令可用于重命名列。

错误:

System.Exception:无效的对象名称“Capprogram”
选择 main1.id 作为 captempCaseMgmtMain_id , CapSSMatrix.Name 作为 captempCaseMgmtMain_idSSMatrix , CapSSMatrix.datefrom 作为 Date , CapSSMatrix.dateto 作为 DateTo , Person.lastname +' , '+Person.firstname 作为 Name , main1.date 作为 captempCaseMgmtMain_id , Capprogram.program 作为 captempCaseMgmtMain_idProgram从 captempCaseMgmtMain main1 左加入 captempCaseMgmtMain main2 on main2.ssmgroup = main1.ssmgroup 和 main2.type = 3 在 main1.idSSMatrix = CapSSMatrix.id 上加入 CapSSMatrix 在 Person.id = main1.familymember 上加入 Capprogram 在 capprogram.id = main1 上。 idprogram where main1.type = 1 and isumeric(main2.id) 1 and ((getdate() > capSSMatrix.dateto) ) and CapSSMatrix.id = '' order by main1.id desc at IMSE.UI.BaseEnginePage.GetDBValues () 在 IMSE.UI.Pages.Aspx_Pages.LoadPage() 在 IMSE.UI.Pages.Aspx_Pages.Page_Load(Object sender, EventArgs e)

这是我尝试过的命令/查询。任何帮助表示赞赏。提前谢谢你。

SELECT
    main1.id AS captempCaseMgmtMain_id,
    CapSSMatrix.Name AS captempCaseMgmtMain_idSSMatrix, 
    CapSSMatrix.datefrom AS Date, 
    CapSSMatrix.dateto AS DateTo,
    Person.lastname + ', ' + Person.firstname AS Name,
    main1.date AS captempCaseMgmtMain_id,
    Capprogram.program AS captempCaseMgmtMain_idProgram
FROM 
    captempCaseMgmtMain main1
LEFT JOIN 
    captempCaseMgmtMain main2 ON main2.ssmgroup = main1.ssmgroup 
                              AND main2.type = 3
JOIN 
    CapSSMatrix ON main1.idSSMatrix = CapSSMatrix.id
JOIN 
    Person ON Person.id = main1.familymember
JOIN 
    Capprogram ON capprogram.id = main1.idprogram
WHERE
    main1.type = 1 AND
    ISNUMERIC(main2.id) <> 1 AND
    (GETDATE() > capSSMatrix.dateto) AND
    CapSSMatrix.id = $CapSSMatrix.id
ORDER BY
    main1.id DESC

【问题讨论】:

  • 我怀疑这与别名有关。我认为这是因为您没有名为Capprogram 的表或视图。也许它只有一个 p。
  • 如果您的查询与表所在的架构不同,则需要使用架构名称对其进行限定。始终使用模式名称对其进行限定是一个好习惯。

标签: sql sql-server


【解决方案1】:

此代码产生以下错误:

消息 126,级别 15,状态 1,第 24 行无效的伪列 "$CapSSMatrix"。

这是因为您的 $CapSSMatrix.id 包含 $ 并且服务器认为它是伪列,但事实并非如此。

所以如果是表名,应该像这样引用:[$CapSSMatrix],如果不是直接删除这个$

【讨论】:

  • 您在问一个问题,然后在评论中进行。这不是答案。
【解决方案2】:

您的表似乎不在架构中。通过以下查询找到您的表架构名称。

select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

然后试着把schemaname.tablename放

还要确保该表存在于您正在使用的数据库中

【讨论】:

    【解决方案3】:

    例如,您必须将 LEFT JOIN 添加到表中:

    1-左加入 captempCaseMgmtMain main2 2-左加入 CapSSMatrix 3-左连接人 4-左加入Capprogram

    【讨论】:

      【解决方案4】:

      此错误表明没有名为 Capprogram 的对象,我只在您的 join 子句中看到它被引用。我会确认此表存在,如果存在,请使用完全限定名称。

      【讨论】:

        猜你喜欢
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        • 2015-10-15
        • 2010-10-11
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        • 2011-06-09
        相关资源
        最近更新 更多