1

这个查询:

SELECT
    DENSE_RANK() OVER (PARTITION BY UPPER(ANUMID), UPPER(PRODNUMID) ORDER BY DATE_ADDED ASC) AS DRANK
,   ANUMID
,   PRODNUMID
,   STATUS_FDATE
,   STATUS_XDATE
,   ROWSTATUS
FROM
    AGCOMN 

该查询按 DATE_ADDED 从 1 到 x 对每组 ANUMID、PRODNUMID 中的行进行排名。在随后的查询中,DRANK=1 获取添加的最新行。

此查询在 ORACLE SQL Developer、我的本地计算机 SSIS 环境以及 TEST 服务器上的 SSIS OLE DB 源预览中有效,但在运行包时不起作用。

错误:

[OLE DB 源 1 [677]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E14。OLE DB 记录可用。来源:“OraOLEDB”Hresult:0x80040E14 描述:“ORA-00936:缺少表达式”。

环境:

  • 本地 - Windows XP、SQL BIDS 2008

  • 测试 - Windows7、SQL/BIDS 2008

从那以后,我重写并简化了查询,将数据抓取到一个临时表中,然后使用 SQL Server 对记录数进行排名和减少。

关于首先找到 SQL 不起作用的根本原因的任何想法?以及为什么预览会起作用,但运行包却不起作用?

4

1 回答 1

2

我发现了这个问题。使用 SQL 中间的双破折号嵌入了注释。当我删除它们时,查询有效。当我“清理”查询以将其发布到这个公共论坛时,我在原始帖子中删除了它们。

在 32 位和 64 位模式下都是如此。我还从 AS DRANK 短语中删除了 AS,这在这种情况下没有任何区别。感谢您的想法。

于 2015-12-14T21:07:00.417 回答