-1

以下是表结构,下面是所需的输出。

请按运行代码片段查看表结构。

    <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 是表名,“ColumnName”列包含要成为的列的名称动态创建并且该列中的值将从“ColumnValue”中获取。请帮助获得所需的输出。如果有可能彻底旋转或任何其他方式。指导我完成。

我所做的是添加多个事务详细信息表并通过使用称为硬编码的“where”获得所需的输出。但需要通过旋转或任何其他方式来完成

4

1 回答 1

0

试试这个

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

在此处输入图像描述

于 2017-09-25T22:11:06.487 回答