当前位置: 首页 > 面试题库 >

Excel 2007 MS Query中的多部分标识符错误,但SQL Server 2008中没有

袁谭三
2023-03-14
问题内容

我有以下SQL代码

SELECT pd1.Meter,
       pd1.BasicPool,
       pd1.RateClass,
       pd1.Flowdate,
       (SELECT upOrDownContract
        FROM   PipelineData pd
        WHERE  pd.id = pd1.sibling) AS DnK,
       match.Volume,
       (SELECT Name
        FROM   Pipeline P
        WHERE  P.id = ISNULL(pd2.pipelineID, t.PipelineId)) AS Pipeline,
       (SELECT Name
        FROM   Client C
        WHERE  C.id = t.ClientId)                           AS CounterParty
FROM   MatchingHistoryBothSides match
       LEFT JOIN PipelineData pd1
              ON match.type1 = 'PipelineDataVO'
                 AND match.id1 = pd1.ID
       LEFT JOIN PipelineData pd2
              ON match.type2 = 'PipelineDataVO'
                 AND match.id2 = pd2.ID
       LEFT JOIN TransactionDailyVolume dtv
              ON match.type2 = 'TransactionDailyVolumeVO'
                 AND match.id2 = dtv.ID
       LEFT JOIN [Transaction] t
              ON dtv.TransactionID = t.ID
WHERE  match.type1 = 'PipelineDataVO'
       AND ( match.type2 = 'PipelineDataVO'
              OR match.type2 = 'TransactionDailyVolumeVO' )
       AND pd1.flowDate BETWEEN ? AND ?
       AND pd1.LDCid = 75
       AND pd1.direction = 'Receipt'

它在SQL Sever 2008中工作正常,但[Microsoft][ODBC SQL Server Driver][SQL Server]The multi-part identifier "pd1.flowDate" could not be bound在Excel 2007中提供了MS
Query。有人可以解释该代码出了什么问题吗?


问题答案:

SelectMS Query中不允许子查询。因此,在删除子查询并使其成为联接后,即可在MS Query中使用。以下代码可在MS Query中使用

SELECT pd1.Meter,
       pd1.BasicPool,
       pd1.RateClass,
       pd1.FlowDate,
       pd.upOrDownContract AS dnk,
       match.Volume,
       p.Name              AS pipeline,
       c.Name              AS counterparty
FROM   Matchinghistorybothsides match
       LEFT JOIN Pipelinedata pd1
              ON match.type1 = 'PipelineDataVO'
                 AND match.id1 = pd1.ID
       LEFT JOIN Pipelinedata pd2
              ON match.type2 = 'PipelineDataVO'
                 AND match.id2 = pd2.ID
       LEFT JOIN Transactiondailyvolume dtv
              ON match.type2 = 'TransactionDailyVolumeVO'
                 AND match.id2 = dtv.ID
       LEFT JOIN [Transaction] t
              ON dtv.TransactionID = t.ID
       LEFT JOIN Client c
              ON c.id = t.ClientId
       LEFT JOIN Pipelinedata pd
              ON pd.id = pd1.sibling
       LEFT JOIN Pipeline p
              ON p.id = COALESCE(pd2.PipelineId, t.PipelineId)
WHERE  match.type1 = 'PipelineDataVO'
       AND ( match.type2 = 'PipelineDataVO'
              OR match.type2 = 'TransactionDailyVolumeVO' )
       AND pd1.FlowDate BETWEEN ? AND ?
       AND pd1.LDCid = 75
       AND pd1.direction = 'Receipt'


 类似资料:
  • 问题内容: 试试这个 给出错误 不能绑定多部分标识符“ tblJobBudget.lastmodifiedby”。 问题答案: 这是因为没有任何带有标识符的表或表别名。 您的表是: 但不是: 如果需要表中的列,则应在表中包含一个子句:

  • 问题内容: 架构: 问题查询: 生成此架构并在SQL Server 2008下在SQLFiddle中运行查询将导致: 对子查询使用CROSS APPLY而不是INNER JOIN可以解决此问题 有什么问题? 编辑:我添加了“ TOP 1”,它是真正查询的一部分,并且是问题的相关部分。 Edit2:有关该问题的更多信息。 问题答案: 您不能将from子句引用到JOIN的另一部分。 改用它。 已编辑

  • 问题内容: 我的错误讯息: 多部分标识符table2.ValidSince“无法绑定。 我需要如何更改更新才能使其正常工作? 问题答案: 您需要加入

  • 我正在使用spring 4.0.5和hibernate 4.3.5;我在hibernate中遇到了一个错误,我不知道我错在哪里(因为我确信我错了)。我有一个与自己相关的表,它代表一个web树,其中每个根节点可以有几个子节点,所以我创建了这个类: 正如您所看到的...这是一个非常简单的POJO类;现在我创建了这个单元测试: 嗯,我检查了一下,在DB中我只有一个ID为4的记录;当我执行这个查询时,我得

  • 我有一个 springboot 应用程序,我想将我的应用程序连接到 H2 数据库。下面是我的架构。 下面是我的应用程序属性。 但是,我面临以下问题: 由:org.h2.jdbc引起。JdbcSQLSyntaxErrorException:SQL语句“create table employee(id bigint not null auto_increment,email varchar(255),

  • 我使用Angular/Universal-Starter作为起动器,它使用Typescript2和WebPack2。 我添加了包和。在添加这些包和相关类型之后: 它在终端中给出了以下错误: 我的tsconfig.json文件: 我如何解决这个错误?谢谢