使用 SQL 的列在 SQL 中进行数据透视
Data Pivoting in SQL using columns of SQL
以下是 Table 结构,下面是所需的输出。
请按 运行 代码段以查看 table 结构。
<html>
<body>
<strong>Existing Structure</strong>
<br>
<br>
<table style="width:100%">
<tr>
<th>VoucherID</th>
<th>ColumnName</th>
<th>ColumnValue</th>
</tr>
<tr>
<td>10</td>
<td>Buyer Name</td>
<td>Mr. ABC</td>
</tr>
<tr>
<td>10</td>
<td>Buyer Address</td>
<td>Vasant Vihar</td>
</tr>
<tr>
<td>10</td>
<td>Buyer City</td>
<td>New Delhi</td>
</tr>
<tr>
<td>10</td>
<td>Buyer Email</td>
<td>email@gmail.com</td>
</tr>
</table>
<br>
<strong>I want output as follow:-</strong>
<br>
<br>
<table style="width:100%">
<tr>
<th>VoucherID</th>
<th>Buyer Name</th>
<th>BuyerAddress</th>
<th>BuyerCity</th>
<th>BuyerEmail</th>
</tr>
<tr>
<td>10</td>
<td>Mr. ABC</td>
<td>Vasant Vihar</td>
<td>New Delhi</td>
<td>email@gmail.com</td>
</tr>
</table>
</body>
</html>
嗨,
我正在使用 SQL Server 2016。
从 "dbo.TransactionDetails.ColumnName" 创建动态列并从 "dbo.TransactionDetails.ColumnValue" 获取值,其中 TransactionDetail 是 Table 名称,并且 "ColumnName" 列包含要动态创建的列的名称和该列中的值将从 "ColumnValue" 中获取。
请帮助获得所需的输出。如果有可能彻底旋转或任何其他 way.Guide 我通过。
我所做的是添加多个事务详细信息 table 并通过使用 "where" 获得所需的输出,这被称为硬编码。但需要通过旋转或任何其他方式来完成
试试这个
create table #Table1
(VoucherID int, ColumnName varchar(100), ColumnValue varchar(255))
insert into #Table1
values (10,'Buyer Name','Mr. ABC')
, (10,'Buyer Address','Vasant Vihar')
, (10,'Buyer City','New Delhi')
, (10,'Buyer Email','email@gmail.com')
select * from #Table1
Select * from
(
Select VoucherID,ColumnName,ColumnValue from #Table1
) as src
pivot
(
MAX(ColumnValue)
FOR ColumnName IN([Buyer Name],[Buyer Address],[Buyer City],[Buyer Email])
)as pvt
--Drop table #Table1
以下是 Table 结构,下面是所需的输出。
请按 运行 代码段以查看 table 结构。
<html>
<body>
<strong>Existing Structure</strong>
<br>
<br>
<table style="width:100%">
<tr>
<th>VoucherID</th>
<th>ColumnName</th>
<th>ColumnValue</th>
</tr>
<tr>
<td>10</td>
<td>Buyer Name</td>
<td>Mr. ABC</td>
</tr>
<tr>
<td>10</td>
<td>Buyer Address</td>
<td>Vasant Vihar</td>
</tr>
<tr>
<td>10</td>
<td>Buyer City</td>
<td>New Delhi</td>
</tr>
<tr>
<td>10</td>
<td>Buyer Email</td>
<td>email@gmail.com</td>
</tr>
</table>
<br>
<strong>I want output as follow:-</strong>
<br>
<br>
<table style="width:100%">
<tr>
<th>VoucherID</th>
<th>Buyer Name</th>
<th>BuyerAddress</th>
<th>BuyerCity</th>
<th>BuyerEmail</th>
</tr>
<tr>
<td>10</td>
<td>Mr. ABC</td>
<td>Vasant Vihar</td>
<td>New Delhi</td>
<td>email@gmail.com</td>
</tr>
</table>
</body>
</html>
嗨, 我正在使用 SQL Server 2016。 从 "dbo.TransactionDetails.ColumnName" 创建动态列并从 "dbo.TransactionDetails.ColumnValue" 获取值,其中 TransactionDetail 是 Table 名称,并且 "ColumnName" 列包含要动态创建的列的名称和该列中的值将从 "ColumnValue" 中获取。 请帮助获得所需的输出。如果有可能彻底旋转或任何其他 way.Guide 我通过。
我所做的是添加多个事务详细信息 table 并通过使用 "where" 获得所需的输出,这被称为硬编码。但需要通过旋转或任何其他方式来完成
试试这个
create table #Table1
(VoucherID int, ColumnName varchar(100), ColumnValue varchar(255))
insert into #Table1
values (10,'Buyer Name','Mr. ABC')
, (10,'Buyer Address','Vasant Vihar')
, (10,'Buyer City','New Delhi')
, (10,'Buyer Email','email@gmail.com')
select * from #Table1
Select * from
(
Select VoucherID,ColumnName,ColumnValue from #Table1
) as src
pivot
(
MAX(ColumnValue)
FOR ColumnName IN([Buyer Name],[Buyer Address],[Buyer City],[Buyer Email])
)as pvt
--Drop table #Table1