2016-04-12 31 views
1

我创建了一个ODBC连接来从Excel文件直接查询MySQL数据库。这是一个非常复杂的查询,它使用aprox 60选择语句,它既可以在原始MySQL数据库上运行,也可以从Microsoft Query进行连接。然而,当我公布一个Excel工作表的结果,它显示了所有列,除了两(均具有## < - 这个!评论)excel mysql不读取所有select语句

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在Excel工作表desappeared

Microsoft Query

说明列

Excel Sheet

+0

我发现这个问题! –

+0

我发现这个问题!我必须明确转换的所有值到CONCAT函数中的字符串。 ('FCM-Invoice',replace(format(numero_facture,0),',',''),' - ',prestation_name,' - ',substring(nom_voyageur,1, ('/',nom_voyageur)-1),'',子字符串(nom_voyageur,locate('/',nom_voyageur)+1,length(nom_voyageur)-locate('/',nom_voyageur))), date_format (现在(),'%​​Y-%m-13')应为 from extrait_sapeig_stat e –

回答

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 
0

为什么不将它转换成MSAccess,然后转换t MSAccess到MySQL