SQL将行转换为列

时间:2017-10-12 04:54:40

标签: mysql sql

id | qns   | ans
---+-------+----
1  | qns 1 | a
1  | qns 2 | b
2  | qns 1 | c
2  | qns 2 | d

我可以用什么SQL查询将上表转换成下表?

id | qns 1 | qns 2
---+-------+------
1  | a     | b
2  | c     | d

2 个答案:

答案 0 :(得分:2)

有多种方法可以将数据从行转换为列。在SQL中,您可以使用PIVOT将行中的数据转换为列。

CREATE table #tablename
(Id int, Value varchar(10), ColumnName varchar(15);


INSERT INTO #tablename
(ID,  Value, ColumnName)

VALUES
(1, 'Lucy', 'FirstName'),
(2, 'James', 'LastName'),
(3, 'ABCDXX', 'Adress'),
(4, 'New York', 'City'),
(5, '8572685', 'PhoneNo');

select FirstName, LastName, Address, City, PhoneNo
from
(
select Value, ColumnName
from #tablename
) d
pivot
(
max(Value)
for ColumnName in (FirstName, LastName, Address, City, PhoneNo)
) piv;

请参阅以下链接,了解将数据从行转换为列的其他选项:

https://www.sqlshack.com/multiple-options-to-transposing-rows-into-columns/

答案 1 :(得分:-1)

您可以使用此关键字“在mysql中透视表格”

来搜索它

或者你可以查看这个网址 http://stratosprovatopoulos.com/web-development/mysql/pivot-a-table-in-mysql/

注意:对不起我的英文