2

以前可能有人问过这个问题,但我似乎在任何地方都找不到任何相关的答案。

几周前,我在 Access (2003) 中写了几个长查询。我今天想使用这些查询,发现它们被截断了。查询按应有的方式开始,并且在中途某处说AS [%$##@_Alias],其余的都丢失了。

这两个查询都只有几百个字符长,远低于 Access 允许的限制。

两个查询的结构都是这样的

SELECT Some calculated fields with a few IIF statements
FROM 
(
    SELECT Some fields calculated with lots of IIF statement
    FROM joined table
    WHERE some condition
)
ORDER BY Some fields

我对 Access 没有特别苛刻的要求,当然不应该导致它愤怒地截断查询。那么为什么会这样呢?

请不要抨击我现在输入日文,下一部分仅供参考。我的一个实际(截断)查询如下所示:

SELECT 
    管理番号, 
    種別, 
    IIF(種別TYPE='', OTHER種別TYPE, IIF(種別TYPE='その他','その他' & OTHER種別TYPE,種別TYPE)) AS TYPE
FROM [
    SELECT 
        管理番号,
        IIF(建物か設備_建物,'建物',IIF(建物か設備_設備, '設備', '種別なし')) AS 種別,
        IIF(建物か設備_建物,IIF(建物用途_戸建住宅,'戸建住宅',IIF(建物用途_共同住宅,'共同住宅',IIF(建物用途_教育施設,'教育施設',IIF(建物用途_庁舎,'庁舎',IIF(建物用途_事務所,'事務所',IIF(建物用途_工場,'工場',IIF(建物用途_倉庫,'倉庫',IIF(建物用途_店舗,'店舗',IIF(建物用途_物置小屋,'物置小屋',IIF(建物用途_車庫,'車庫',IIF(建物用途_農作小屋,'農作小屋',IIF(建物用途_その他,'その他')))))))))))),
        IIF(建物か設備_設備,IIF(設備種別_物置,'物置',IIF(設備種別_駐車場,'駐車場',IIF([設備種別_運動場/庭等],'運動場/庭等',IIF(設備種別_電気設備等,'電気設備等',IIF(設備種別_畜舎など,'畜舎など',IIF(設備種別_ビニールハウス等,'ビニールハウス等',IIF(設備種別_その他,'その他'))))))),'')) AS 種別TYPE,
        '(' & REPLACE(REPLACE(TRIM(建物用途_その他記載欄),'(',''),')','') & ')' AS OTHER種別TYPE
    FROM 
        T_メイン INNER JOIN T対象 ON T_メイン.管理番号=T対象.調査番号]. AS [%$##@_Alias];

编辑

我重新检查了我的两个查询,不像我说的只有一个被截断了。另一个完好无损。异常诡异...

4

1 回答 1

2

我注意到,如果我不为子查询分配别名,Access 的查询设计器将为我分配一个别名。这些别名类似于您引用的别名,[%$##@_Alias]. 但是,我没有注意到它在添加这样的别名时会丢弃我的 SQL 文本的任何部分。因此,尽管这个建议可能是一个长期的建议,但请尝试分配您自己的别名,例如FROM ( ... ) AS sub,并查看查询设计器是否保留了您的 SQL 文本的其余部分。

于 2013-02-07T05:15:21.910 回答