2016-04-12 55 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