--動態橫表轉縱表
--建表語句
if not object_id('class1') is null
drop table class1
gocreate table class1([student] nvarchar(2),[數學] int,[物理] int,[英語] int,[語文] int)
insert class1
select n'李四',77,85,65,65 union all
select n'張三',87,90,82,78
go--橫表轉縱表
declare @sql nvarchar(4000)
select @sql = isnull(@sql+' union all ','')+'select [student] as [姓名],[學科]='+quotename(name,'''')
+',[分數]='+quotename(name)+' from class1'
from syscolumns where id = object_id('class1') and name not in('student')
exec('select * from('+@sql+')t order by 姓名,[學科]')
--動態縱表轉橫表
--建表語句
if not object_id('class') is null
drop table class
gocreate table class([student] nvarchar(2),[subject] nvarchar(2),[grade] int)
insert class
select n'張三',n'語文',78 union all
select n'張三',n'數學',87 union all
select n'張三',n'英語',82 union all
select n'張三',n'物理',90 union all
select n'李四',n'語文',65 union all
select n'李四',n'數學',77 union all
select n'李四',n'英語',65 union all
select n'李四',n'物理',85
godeclare @names nvarchar(600)
set @names = 'select student as 姓名 '
select @names = @names+',max(case subject when '''+subject+''' then grade else null end) ['+subject+']' from (select distinct subject from class) as a
set @names = @names +',sum(grade) as 總成績 '
set @names = @names + 'from class group by student'
exec(@names)
位元組碼轉換學習
之前寫netty,雖然用的是nenty,實現了netty與protobuf的整合,不過現在看到的成熟的nenty開源專案,都是用netty4寫的,還是header和body,在handler中實現物件的轉換。學習netty的時候,關於位元組轉換,學習的記錄一下 第一 運算子 按位非 not 一元運算...
1 mysql縱橫表轉換
使用縱表的優勢在於增加某種型別資料時不需要改變表結構。如課程中增加了化學。使用橫表的優勢在於欄位多,表述能力強,從而資料條目少。case when的使用 sum函式和group by的使用 create table table a 姓名 varchar 20 課程 varchar 20 成績 int...
SQL資料表縱橫轉換
select distinct select b.risk from rhwl easy genes new risk b where b.genes id a.id and b.disease b.disease as b.disease from rhwl easy genes new a,rh...