Search code examples
mysqlsqlexcelodbcmicrosoft-query

excel mysql not reading all select statement


I create an ODBC connection to query a MySQL database direct from an Excel file. It is a quite complex query with aprox 60 select statements that works perfect both on the original MySQL database and connecting from Microsoft Query. However when I publish the result on an Excel sheet, it shows all columns except two (both have a ## <-- THIS!!! comment)

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;

In other to simplify, these are the malfunction statements

',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!!!

I do not have no idea of why they are failing. I already have longer statements in the same query, and the function concat() already work too. I'm assuming there's a problem with statements with more than 3 indented functions, but I'm not sure.

If any of you have a any idea of why this is failing, it will help me a lot

Correct result in Microsoft Query

Microsoft Query

Description columns desappeared in Excel Sheet

Excel Sheet


Solution

  • I found the problem!, I must explicit convert all values to strings inside the concat functions.

    now I have this

     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