在 SQL Server 中将行转换为列的 SQL 查询
原文:https://www . geesforgeks . org/SQL-查询-转换-行-列-in-sql-server/
在本文中,我们将看到如何在 SQL Server 中将行转换为列。在一个表中,许多列的许多条目具有相同的数据,建议将行转换为列。这将有助于缩小表格并使表格更易读。
例如, 假设我们下面给出了一个表:
T30】0261150T70】91T73T76】MSITT78】08999 | **名称** | **学院** | **辊号** | **主题** | T21 马克 | | -罗蜜 | BVP | 数据库管理系统 | 制图法 | Ninety-five | | PUSHKAR | 断续器 | 089888 | 数据库管理系统 | | PUSHKAR |如果我们将此表的数据存储为:
就更好了 | **名称** | **学院** | **辊号** | 【T17】数据库管理系统 | T21】网络 | T25】GRAPHICS | | -罗蜜 | BVP |我们可以使用 SQL 中的【PIVOT】函数将行转换为列。
语法:
SELECT (ColumnNames)
FROM (TableName)
PIVOT
(
AggregateFunction(ColumnToBeAggregated)
FOR PivotColumn IN (PivotColumnValues)
) AS (Alias);
//Alias is a temporary name for a table
为了演示的目的,我们将在名为“极客”的数据库中创建一个 demo_table。
步骤 1: 创建数据库
使用下面的 SQL 语句创建一个名为 geeks 的数据库。
查询:
CREATE DATABASE geeks;
步骤 2 :使用数据库
使用下面的 SQL 语句将数据库上下文切换到极客。
查询:
USE geeks;
步骤 3: 表格定义
我们的极客数据库中有以下演示表。
查询:
CREATE TABLE demo_table(
NAME varchar(30),
COLLEGE varchar(30),
EXAM_DATE DATE,
SUBJECTS varchar(30),
MARKS int);
步骤 4: 将数据插入表格
查询:
INSERT INTO demo_table VALUES ('ROMY', 'BVCOE',
'12-OCT-2021', 'DBMS', 90),
('ROMY', 'BVCOE', '12-OCT-2021', 'NETWORKING', 90),
('ROMY', 'BVCOE', '12-OCT-2021', 'GRAPHICS', 100),
('ROMY', 'BVCOE', '12-OCT-2021', 'CHEMISTRY', 98),
('ROMY', 'BVCOE', '12-OCT-2021', 'MATHEMATICS', 78),
('PUSHKAR', 'MSIT', '14-OCT-2021', 'NETWORKING' , 97),
('PUSHKAR', 'MSIT', '14-OCT-2021', 'GRAPHICS', 98),
('PUSHKAR', 'MSIT', '14-OCT-2021', 'CHEMISTRY', 79),
('PUSHKAR', 'MSIT', '14-OCT-2021', 'MATHEMATICS', 79),
('PUSHKAR', 'MSIT', '14-OCT-2021', 'DBMS', 79);
第五步:查看表格内容
使用以下命令查看 demo_table 的内容:
查询:
SELECT * FROM demo_table;
输出:
第六步:使用透视功能将行转换为列。
查询:
SELECT * FROM demo_table
PIVOT
(AVG(MARKS) FOR SUBJECTS IN (DBMS,NETWORKING,
GRAPHICS, CHEMISTRY, MATHEMATICS)) AS PivotTable;
我们使用了 AVERAGE 聚合函数,因为一个值的平均值就是该值本身。
输出:
我们可以看到行被转换为列。
版权属于:月萌API www.moonapi.com,转载请注明出处