2017-05-24 47 views
0

值轉換成轉動柱相同的表我有一些數據的表下面的表格如何移動列及其在MSSQL

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

我如何才能將GeneralError列到日誌類型,並實現以下輸出用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  | 

謝謝你的幫助。

回答

1

我會做的逆轉置這樣的:

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

這似乎是一個很好的查詢,但我有15GB的數據在該數據庫中。這個查詢會導致問題嗎? – user1534115

+0

@ user1534115。 。 。不超過表中不過濾任何行的其他任何查詢。 –

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