如何将列及其值移动到MSSQL中的同一个表中的pivoted列中

时间:2017-05-24 11:58:25

标签: sql sql-server tsql pivot

我有一个表格,其中包含以下表格中的一些数据

| LogDate  | AppName          | LogType | LogCount | GeneralError |
| 1-1-2017 | Registration App | Error   | 10       | 1            |
| 2-1-2017 | Reporting App    | Error   | 5        | 2            |

如何将GeneralError列移动到LogType中并使用t-sql实现以下输出?

| LogDate  | AppName          | LogType       | LogCount |
| 1-1-2017 | Registration App | Error         | 10       |
| 2-1-2017 | Reporting App    | Error         | 5        |
| 1-1-2017 | Registration App | GeneralError  | 1        | 
| 2-1-2017 | Reporting App    | GeneralError  | 2        |

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我会像这样做这样的事情:

select t.LogDate, t.AppName, v.LogType, v.LogCount
from t cross apply
     (values ('Error', t.LogCount), ('GeneralError', t.GeneralError)
     ) v(LogType, LogCount);

答案 1 :(得分:0)

从您提出问题的方式判断,您也可以通过联合而不是枢轴结构来解决这个问题。

declare @t table (logdate date, appname varchar(50), logtype varchar(50), logcount int, generalerror int)
insert into @t values ('20170101','Registration App', 'Error', 10, 1),('20170102', 'Reporting App', 'Error', 5, 2)

select  * from (
select  logdate, appname, 'Error' as logtype, Logcount 
from    @t 
union 
select  logdate, appname, 'GeneralError' as logtype, GeneralError as Logcount 
from    @t 
) x order by logdate asc