Sql server 2008 r2 不正确的语法多部分标识符

Sql server 2008 r2 不正确的语法多部分标识符,sql-server-2008-r2,Sql Server 2008 R2,目前,我得到了一个错误的语法,但无法找到它的起源。有没有想过我错过了什么。找不到多部分标识符pvxme.mt SELECT PVXME.MT PVXME.MT_VERSION PVXME.START_DATE_LOCAL PVXMEDS.CREATION_DATE_LOCAL PVXMIHS.USER_NAME PVXMEDE.PAT_ID PVXMEDE.STRING_VALUE PVXMEDE.NUM_VALUE AS MEDE

目前,我得到了一个错误的语法,但无法找到它的起源。有没有想过我错过了什么。找不到多部分标识符pvxme.mt

SELECT
    PVXME.MT
    PVXME.MT_VERSION
    PVXME.START_DATE_LOCAL
    PVXMEDS.CREATION_DATE_LOCAL
    PVXMIHS.USER_NAME
    PVXMEDE.PAT_ID
    PVXMEDE.STRING_VALUE
    PVXMEDE.NUM_VALUE AS MEDE_NUM_VALUE
    RVXMIIF2.II
    RVXMIIF2.NUM_VALUE AS MIIF_NUM_VALUE;
FROM 
    PVXMEDE
RIGHT OUTER JOIN 
    PVXMEDG ON PVXMEDG.ME = PVXMEDE.ME;
RIGHT OUTER JOIN 
    PVXMEDG ON PVXMEDG.SEQUENCE = PVXMEDE.SEQUENCE 
            AND PVXMEDG.SOURCE_TP = PVXMEDE.SOURCE_TP 
            AND PVXMEDG.SOURCE_ID = PVXMEDE.SOURCE_ID 
            AND PVXMEDG.SOURCE_VERSION = PVXMEDE.SOURCE_VERSION;
RIGHT OUTER JOIN 
    PVXMEDS ON PVXMEDS.ME = PVXMEDG.ME 
            AND PVXMEDS.SEQUENCE=PVXMEDG.SEQUENCE;
RIGHT OUTER JOIN 
    PVXME ON PVXME.ME = PVXMEDS.ME AND PVXME.MT=;
RIGHT OUTER JOIN 
    PVXMI ON PVXMI.MI = PVXME.MI;
LEFT OUTER JOIN 
    PVXMIHS ON PVXMIHS.MI = PVXME.MI;
LEFT OUTER JOIN 
    PVXMIID ON PVXME.ME = PVXMIID2.ME;
LEFT OUTER JOIN 
    RVXMIII ON PVXMIID2.MI = RVXMIIF2.MI 
            AND PVXMIID2.ID = RVXMIIF2.ID 
            AND PVXMIID2.ID_SEQUENCE = RVXMIIF2.ID_SEQUENCE 
            AND PVXMIID2.ME = RVXMIIF2.ME;
WHERE
    (PVXMIHS.USER_NAME <> 'sipat'
    AND PVXMIHS.WHAT = 'MethodPrepare'
    AND PVXME.CX_STRING_4  =  '20190117-7h40m'
    AND PVXME.MT  LIKE  'MK-0431%Tab CA%'
    AND PVXMEDE.PAT_ID  NOT LIKE  '%Spectrum')
    AND (RVXMIIF2.II  =  'LeverageLimit'OR RVXMIIF2.II  =  'XresidualLimit')
试试这个:

在“选择列”列表中的每一列后面都放一个冒号 不要在列列表和每个联接条件的末尾加分号 完成引用PVXME.MT=……的右侧外部联接。。。。。。。 代码:


请以格式化文本形式发布查询-不要发布代码截图!这很烦人,因此不受欢迎……@marc_.s。很抱歉。我已经更新了我的帖子。如果你发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮{},以很好地格式化和语法突出显示它!两件事跳出-你真的想在每个连接条件后使用分号吗?PVXMEDG.ME上的右外连接PVXMEDG=PVXMEDE.ME;我不确定SQL Server是如何喜欢它的。。。。。这个连接条件绝对是不完整的:PVXME.ME=PVXMEDS.ME和PVXME.MT=上的右外部连接PVXME;这可能是您遇到的错误之一,我得到的pvxmede对象名无效。有什么想法吗?现在我得到:Msg 1013,级别16,状态1,第1行FROM子句中的对象PVXMEDG和PVXMEDG具有相同的公开名称。使用相关名称来区分它们。@Diego83;您两次加入PVXMEDG-因此,您需要使用表别名将这两个分开我将别名P1和P2添加到我的查询中,我现在获得了一些性能上的成功。Msg 1105,级别17,状态2,第1行无法为数据库“tempdb”中的对象“dbo.SORT临时运行存储:140738207350784”分配空间,因为“主”文件组已满。通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件启用自动增长来创建磁盘空间。对微调有什么想法吗?
SELECT
    PVXME.MT,
    PVXME.MT_VERSION,
    PVXME.START_DATE_LOCAL,
    PVXMEDS.CREATION_DATE_LOCAL,
    PVXMIHS.USER_NAME,
    PVXMEDE.PAT_ID,
    PVXMEDE.STRING_VALUE,
    PVXMEDE.NUM_VALUE AS MEDE_NUM_VALUE,
    RVXMIIF2.II,
    RVXMIIF2.NUM_VALUE AS MIIF_NUM_VALUE
FROM 
    PVXMEDE
RIGHT OUTER JOIN 
    PVXMEDG P1 ON P1.ME = PVXMEDE.ME    -- use table alias P1 here
RIGHT OUTER JOIN 
    PVXMEDG P2 ON P2.SEQUENCE = PVXMEDE.SEQUENCE  -- use table alias P2 here
               AND P2.SOURCE_TP = PVXMEDE.SOURCE_TP 
               AND P2.SOURCE_ID = PVXMEDE.SOURCE_ID 
               AND P2.SOURCE_VERSION = PVXMEDE.SOURCE_VERSION
RIGHT OUTER JOIN 
    PVXMEDS ON PVXMEDS.ME = P2.ME 
            AND PVXMEDS.SEQUENCE = P2.SEQUENCE
RIGHT OUTER JOIN 
    PVXME ON PVXME.ME = PVXMEDS.ME AND PVXME.MT = ?????? -- ** COMPLETE THIS! **
RIGHT OUTER JOIN 
    PVXMI ON PVXMI.MI = PVXME.MI
LEFT OUTER JOIN 
    PVXMIHS ON PVXMIHS.MI = PVXME.MI
LEFT OUTER JOIN 
    PVXMIID ON PVXME.ME = PVXMIID2.ME
LEFT OUTER JOIN 
    RVXMIII ON PVXMIID2.MI = RVXMIIF2.MI
            AND PVXMIID2.ID = RVXMIIF2.ID 
            AND PVXMIID2.ID_SEQUENCE = RVXMIIF2.ID_SEQUENCE 
            AND PVXMIID2.ME = RVXMIIF2.ME
WHERE
    (PVXMIHS.USER_NAME <> 'sipat'
    AND PVXMIHS.WHAT = 'MethodPrepare'
    AND PVXME.CX_STRING_4  =  '20190117-7h40m'
    AND PVXME.MT  LIKE  'MK-0431%Tab CA%'
    AND PVXMEDE.PAT_ID  NOT LIKE  '%Spectrum')
    AND (RVXMIIF2.II  =  'LeverageLimit'OR RVXMIIF2.II  =  'XresidualLimit')