如何在没有数据透视的情况下将行转换为 mysql 查询中的列。我有一个表模式
***********************
ID SchoolName
1 JV
2 SDH
***********************
我想将其转置为
**1 JV 2 SDH**
我试过枢轴,但我需要找到一个替代方案。请帮忙。
SELECT GROUP_CONCAT(CONCAT(ID, ' ', SchoolName) SEPARATOR ' ') AS OUTPUT
FROM YourTable
即使根据您的最后评论,仍然不清楚您要达到什么目标,这实际上会阻止您获得所需的确切答案。
现在,如果您只需要转置您的国家/地区表并将其呈现为单行,您可以使用动态 SQL 来实现
SET @sql = NULL;
SELECT GROUP_CONCAT(CONCAT(id, '`', country_name, '`'))
INTO @sql
FROM countries;
SET @sql = CONCAT('SELECT ', @sql);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
输出:
| 印度 | 美国 | 巴西 | ---------------------- | 1 | 2 | 3 |
这是SQLFiddle演示
SELECT
GROUP_CONCAT(CONCAT_WS(' ',`ID`,`SchoolName`) ORDER BY `ID` ASC SEPARATOR ' ') gre
FROM
tblstudents ;