/ / Как мога да трансформирам съхранена процедура в един единствен SQL статус - mysql

Как мога да трансформирам съхранената процедура в един SQL инструмент - mysql

Имам таблица в моята база данни, която изглежда (може да има същите кортежи в таблицата):

+-------------+---------+--------+
| ProductName | Status  | Branch |
+-------------+---------+--------+
| P1          | dead    |      1 |
| P1          | dead    |      2 |
| P1          | dead    |      2 |
| P2          | expired |      1 |
+-------------+---------+--------+

Трябваше да покажа резултата след като (атрибутът Branch е динамичен):

+-------------+---------+--------+
| ProductName | Branch 1|Branch 2|
+-------------+---------+--------+
| P1          | dead    |    dead|
| P2          | expired |     OK |
+-------------+---------+--------+

След малко помощ измислих следното решение:

ЗАДАВАНЕ @sql =НУЛА; ИЗБЕРЕТЕ GROUP_CONCAT (DISTINCT CONCAT ( "COALESCE (GROUP_CONCAT (DISTINCT случай, когато клон =" "", клон, "" "след това край на състоянието)," "ОК" ") КАТО", CONCAT ("Клон", клон) ) ) В @sql ОТ Таблица1;  SET @sql = CONCAT ("SELECT productName,", @sql, " ОТ Таблица1 ГРУПИРАНЕ ПО ИМЕ на продукта ");  ПРИГОТВЕТЕ stmt ОТ @sql; ИЗПЪЛНИТЕ stmt;

Той показва точния резултат, от който се нуждаех:

+-------------+---------+-----------+
| productName | Branch1 |  Branch2  |
+-------------+---------+-----------+
| p1          | dead    |    dead   |
| p2          | expired |    OK     |
+-------------+---------+-----------+

SQL Fiddle.

Искам тази процедура да се трансформира в един SQL оператор. Опитах, но не можах да намеря решение. Как мога да постигна това? Благодаря

Отговори:

0 за отговор № 1

Този точен резултат (тъй като той се получава от съхранената процедура, с броя на колоните, определен по време на изпълнение), не може да бъде възпроизведен в един SQL оператор за избор. Не е възможно.