2015-07-08 4 views
0

Я получаю таблицу, как это, когда запускают некоторые запросы с объединениями. Проблема состоит в том, что столбцы и строки этой таблицы динамически меняются на основе основной таблицы. Поэтому я не могу решить столбец и строки.Как суммировать столбец в mysql?

Select 
    .. 
    .. 
    (20GP+20HD+20RF+30FR+30HD+30GP+30GP+40HD+40FR+40RF) as total 
    from 
    tablename 

, если я использую этот запрос выше, то мне нужно изменять запрос каждый раз, так что вместо этого выше запроса, пожалуйста, кто-нибудь сказать мне, как это сделать.

Теперь мне нужно суммировать каждые столбцы в этой таблице и должен показать в отдельной колонке Total

------------------------------------------------------..etc..,----- 
location|20GP|20HD|20RF|30FR|30HD|30GP|30GP|40HD|40FR|..etc..,40RF| 
------------------------------------------------------..etc..,----- 
    UAE | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |..etc.., 1 | 
    USA | 2 | 3 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |..etc.., 0 | 
    ......., 
    ......., 
    ........etc, 

    IND | 0 | 0 | 0 | 2 | 0 | 0 | 1 | 0 | 1 | ..etc.., 1 | 
------------------------------------------------------..etc..,---- 

только что показано ниже ожидаемого результата

----------------------------------------------------------------- 
location|20GP|20HD|20RF|30FR|30HD|30GP|30GP|40HD|40FR|40RF|total 
----------------------------------------------------------------- 
    UAE | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 4 
    USA | 2 | 3 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 7 
    ......., 
    ......., 
    ........etc, 

    IND | 0 | 0 | 0 | 2 | 0 | 0 | 1 | 0 | 1 | 1 | 5 
----------------------------------------------------------------- 

пожалуйста кто-нибудь сказать, как это сделать

+0

Невозможно работать выше по цепочке? Чтобы суммировать столбцы перед созданием этой таблицы? Звучит неплохо – Mihai

ответ

-1

Эй, попробуйте выполнить запрос, чтобы получить список столбцов и подготовить строку запроса из него и выполнить эту строку, подготовив инструкцию. вы просто проверяете шаблон столбца в регулярном выражении.

(SELECT CONCAT('SELECT ', group_concat(`COLUMN_NAME` SEPARATOR '+'), ' as total FROM Test2') INTO @sql 
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA` = (select database()) 
AND `TABLE_NAME` = 'Test2' 
AND `COLUMN_NAME` REGEXP '^[0-9]'); 

PREPARE stmt1 FROM @sql; 
Execute stmt1; 
Смежные вопросы