excel mysql没有读取所有select语句

时间:2016-04-12 09:04:16

标签: mysql sql excel odbc microsoft-query

我创建一个ODBC连接,直接从Excel文件查询MySQL数据库。使用aprox 60 select语句这是一个非常复杂的查询,它在原始MySQL数据库和从Microsoft Query连接时都能很好地完成。但是,当我在Excel工作表上发布结果时,它会显示除两个以外的所有列(两个都有##< - THIS !!!注释)

select
    nom_client as Custname
    ,case  when locate('/',nom_voyageur)  > 0 
        then substring(nom_voyageur,1,locate('/',nom_voyageur)-1)
        else nom_voyageur end as Lastname
    ,case  when locate('/',nom_voyageur)  > 0 
        then substring(nom_voyageur,locate('/',nom_voyageur) + 1, length(nom_voyageur)-locate('/',nom_voyageur))
        else '' end as Firstname
    ,zone_stat_1 as Empcode
    ,concat(substring(booker,locate(' ',booker) + 1, length(booker)-locate(' ',booker)),' ',substring(booker,1,locate(' ',booker)-1)) as Booker
    ,zone_stat_3 as 'Euronext TAF Approver level 2'
    ,'' as "Trip Reason"
    ,prestation_name as Vendor
    ,departure_date as Servicedate
    ,'' as Savings
    ,advance_purchase as Advpurchgroup 
    ,   tickets_number as Ticketcount
    ,   '' as Triplength
    ,'' as 'Class of Service'
    ,case Activite when 1 then 'Rail'
        when 2 then 'Hotel'
        when 3 then 'Maritime'
        when 4 then 'Fees / Regulations'
        when 5 then 'Air'
        when 6 then 'Frais'
        when 7 then 'Visa / Shipments / Subscriptions / ESTA' end as Producttype
    ,case when length(trajet_origine_destination) > length(replace(trajet_origine_destination,'/',''))
        then substring(trajet_origine_destination,1,locate('/',trajet_origine_destination)-1) 
        else trajet_origine_destination end as 'Origin Cityname'
    ,case when length(trajet_origine_destination) > length(replace(trajet_origine_destination,'/',''))
        then substring(trajet_origine_destination,locate('/',trajet_origine_destination) + 1, length(trajet_origine_destination)-locate('/',trajet_origine_destination))
        else trajet_origine_destination end as 'Destination Cityname'
    ,'Invoice' as Fop
    ,'APInv' as 'Journal Name'
    ,Invoice_date as 'Invoice Date'
    ,'Vendor' as 'Account Type'
    ,'' as LCOA
    ,640139 as 'Main Account' 
    ,Zone_stat_2 as 'Cost Center'
    ,'' as Project
    ,'' as MarketSegment
    ,'' as Custumer
    ,'FAES000528' as Supplier 
    ,'' as Intercompany
    ,'' as Product
    ,'' as Dim9
    ,'' as Dim10
    ,'Ledger' as OffAccountType
    ,'' as OffMainAccount
    ,'' as OffsetLCOA
    ,'' as OffCostCenter
    ,'' as OffProject
    ,'' as OffMarketSegment
    ,'' as OffCustomer
    ,'' as OffSupplier
    ,'' as OffIntercompany
    ,'' as OffProduct
    ,'' as OffDim9
    ,'' as OffDim10
    ,concat('FCM-Invoice ',numero_facture,' - ',prestation_name,' - ',substring(nom_voyageur,1,locate('/',nom_voyageur)-1),' ',substring(nom_voyageur,locate('/',nom_voyageur) + 1, length(nom_voyageur)-locate('/',nom_voyageur))) as Description  ## <-- THIS!!!
    ,'EUR' as CurrencyCode
    ,case when Montant_vente > 0 then Montant_vente else 0 end as AmountCurDebit
    ,case when Montant_vente < 0 then Montant_vente*-1 else 0 end as AmountCurCredit
    ,case when Montant_vente > 0 then Montant_vente else 0 end as FunctionalCUrDebit
    ,case when Montant_vente < 0 then Montant_vente*-1 else 0 end as FunctionalCurCredit
    ,'AP Posting' as PostingProfile
    ,'Electronic' as PaymMode
    ,'INMEDIATE' as Payment
    ,concat(year(now()),'-',if(month(now())<10,concat('0',month(now())),month(now())),'-13') as Due ## <-- THIS!!!
    ,'AP_DOM' as 'TaxGroup'
    ,case activite when 6 then 'HIGH_S' else 'EXEMPT' end as TaxItemGroup
    ,'' as DocumentNum
    ,Invoice_date as DocumentDate
    ,numero_facture as Invoice
    ,'' as Prepayment
    ,'' TaxCode
    ,'' ExchRate
    ,'No' as ReverseEntry
    ,'' as ReverseDate
    ,'FAES' as Company
    ,'FAES' as OffsetCompany 
from extrait_sapeig_stat e
where mot_dir_client = 'ETT'
    and invoice_year = year(date_add(now(),Interval -1 month)) and invoice_month = month(date_add(now(),Interval -1 month))
    and activite != 11
order by invoice_date, numero_facture;

另一方面,为了简化,这些是故障陈述

',substring(nom_voyageur,locate('/',nom_voyageur) + 1, length(nom_voyageur)-locate('/',nom_voyageur))) as Description  ## <-- THIS!!!
,concat(year(now()),'-',if(month(now())<10,concat('0',month(now())),month(now())),'-13') as Due ## <-- THIS!!!

我不知道他们为什么会失败。我在同一个查询中已经有了更长的语句,而函数concat()也已经有效了。我假设有超过3个缩进函数的语句存在问题,但我不确定。

如果你们中任何一个人知道为什么会失败,那将会对我有所帮助

在Microsoft Query中更正结果

Microsoft Query

Excel工作表中消失的描述列

Excel Sheet

2 个答案:

答案 0 :(得分:0)

为什么不将其转换为MSAccess,然后将MSAccess转换为MySQL

答案 1 :(得分:0)

我发现了问题!我必须将所有值显式转换为concat函数内的字符串。

现在我有了这个

 SELECT concat('FCM-Invoice ',replace(format(numero_facture,0),',',''),' - ',prestation_name,' - ',substring(nom_voyageur,1,locate('/',nom_voyageur)-1),' ',substring(nom_voyageur,locate('/',nom_voyageur) + 1, length(nom_voyageur)-locate('/',nom_voyageur))) as description,
 date_format(now(),'%Y-%m-13') as due
from extrait_sapeig_stat e