从 ms sql 导出以访问时出错

Posted

技术标签:

【中文标题】从 ms sql 导出以访问时出错【英文标题】:Error while exporting from ms sql to access 【发布时间】:2009-10-28 10:54:40 【问题描述】:

我正在尝试从ms sql server 导出查询中的以下数据进行访问,提示错误“字段wkid 已存在于表结果中”

当我尝试使用 sql 查询分析器执行相同操作时,它没有给出任何错误。我在网格中得到结果

Select a.wkid,a.stid,a.pfid,pf.pfname,a.modid,mm.md,a.catid,
[sp],revenue,profit,wkid  from
(select stid,modid,pfid,catid,
[sp],revenue,profit,wkid 
from dbo.modspsal
where wkid >= 200934 and wkid <= 201033 and 
catid in (20001,20002,20003,20004,20005,20006)) as a
left join mml mm on 
mm.modid=a.modid
left join (select distinct pfid,[pf name] as pfname from mml) as pf
on pf.pfid=a.pfid
order by a.wkid,stid,catid,a.pfid,a.modid

【问题讨论】:

拥有格式更好的代码可以更容易地看到@astander 在他的回答中指出的内容。 sql 查询分析器不关心列名是否重复,请尝试 SELECT 1 as A, 1 AS A, 1 AS A 但如果您尝试在 Access 中创建新表,我敢打赌它在乎。 【参考方案1】:

当您导出到 excel 时,您需要具有唯一的列名。你已经指定了 wkid 2。

Select  a.wkid,--HERE
        a.stid,
        a.pfid,
        pf.pfname,
        a.modid,
        mm.md,
        a.catid, 
        [sp],
        revenue,
        profit,
        wkid  --HERE
from    (
            select  stid,
                    modid,
                    pfid,
                    catid, 
                    [sp],
                    revenue,
                    profit,
                    wkid  
            from    dbo.modspsal 
            where   wkid >= 200934 
            and     wkid <= 201033 
            and     catid in (20001,20002,20003,20004,20005,20006)
        ) as a  left join 
        mml mm  ON  mm.modid=a.modid  left join 
        (
            select  distinct 
                    pfid,
                    [pf name] as pfname 
            from mml
        ) as pf on  pf.pfid=a.pfid 
order by a.wkid,stid,catid,a.pfid,a.modid

删除最后一个 wkid 应该没问题。

【讨论】:

以上是关于从 ms sql 导出以访问时出错的主要内容,如果未能解决你的问题,请参考以下文章

连接到 MS SQL 服务器时出错

从 MS Access 数据库获取日期时出错?

Oracle SQL Developer - 将视图从一个数据库复制到另一个数据库时出错

将 SQL 导出到 CSV 时出错 - 管道

使用 powershell 导出 azure db 时出错

使用 ODBC 连接到 MYSQL 在 MS-Access 中运行 SQL 时出错