2015-08-26 2 views
1

я использую MS-Access для создания запроса, и я хочу использовать его в MYSQL, но функция некоторых MS-Access не поддерживается MYSQL:Преобразовать перекрестную вкладку запрос от MS-доступа к MySQL

Моего мса -Доступ запрос, который я хочу, чтобы преобразовать в MYSQL является:

TRANSFORM Count(s1.s1_ID) AS Comps1_ID 
SELECT s1.s1_ID, s1.Name 
FROM s1 INNER JOIN eq ON s1.s1_ID = eq.s1_ID 
GROUP BY s1.s1_ID, s1.Name 
PIVOT eq.Type; 

Существует мои таблицы:

tables

Там это данные:

enter image description here

Существует мой выход:

enter image description here

+1

К сожалению, нет pi функция vot для mysql, для неизвестного набора элементов pivot вам нужно использовать динамический sql, вы можете проверить 'mysql dynamic pivot' вопрос здесь SO –

+0

Пожалуйста, можете ли вы помочь мне преобразовать этот запрос в mysql с помощью динамического sql? –

+1

Да, но мне нужны структуры таблиц и некоторые образцы данных. –

ответ

1

Вот так, что вам нужно сделать в MySQL с использованием динамического SQL

set @sql = null; 
select 
    group_concat(distinct 
    concat(
     'sum(case when eq.type = ''', 
     eq.type, 
     ''' then 1 else 0 end) AS ', 
    concat('`',eq.type,'`') 
    ) 
) into @sql 
from eq ; 

set @sql = concat('select s1.s1_id, s1.name, ', @sql, ' from s1 
        join eq on eq.s1_id = s1.s1_id 
        group by s1.s1_id 
'); 

prepare stmt from @sql; 
execute stmt; 
deallocate prepare stmt; 

Demo

+0

спасибо Я проверю его сейчас –

+0

Спасибо! оно работает! –

+0

Добро пожаловать! –

Смежные вопросы