我有一个表格,其中包含以下表格中的一些数据
| 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 |
感谢您的帮助。
答案 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