-2

私はテーブルを持っています - EmployeeDetails。ここには、ColumnName と Details の 2 つの列があります。以下は表です: -

ColumnNames     Details
-----------     -------
Sno             1
Firstname       Daya
Lastname        Sharma
EmailId         <email1>@gmail.com
sno             2
Firstname       Kriti 
Lastname        joshi
EmailId         <email2>@yahoo.com

ここで、名、姓、メールアドレス、sno を列に変換する必要があります。どうすればこれを行うことができますか?

そして、列名に変換したい

Sno  FirstName  Lastname  Emailid
1    Daya       Sharma    <email1>@gmail.com
2    Kriti      Joshi     <email2>@yahoo.com
4

3 に答える 3

0

データを適切にピボットできるようにするには、少なくとももう 1 つの列 (EmployeeID と呼びましょう) が必要です。そうしないと、どの姓がどの姓、息子、メール ID などに属しているかを知る方法がありません。

そのような列があればPIVOT、期待どおりに機能します

SELECT Sno, Firstname, Lastname, Emailid
  FROM
(
  SELECT EmployeeId, ColumnNames, Details 
    FROM EmployeeDetails
) s
PIVOT
(
  MAX(Details)
  FOR ColumnNames IN([Sno],[Firstname],[Lastname],[Emailid])
) p;

出力:

| | スノー | ファーストネーム | 姓 | メールアドレス |
|-----|-----------|----------|-------------------- | |
| | 1 | ダヤ | ダヤ | シャルマ | @gmail.com |
| | 2 | クリティ | 女子 | @yahoo.com |

これがSQLFiddleのデモです

于 2013-11-11T10:19:45.550 に答える
0
select sno,firstname,lastname,Emailid
from
(
select columnnames,details from table
)d

pivot
(
max(details)
for columnnames in([sno],[firstname],[lastname],[emailid])
)piv;
于 2013-11-11T09:40:01.083 に答える