縱橫表轉換學習

2021-05-24 13:24:35 字數 1496 閱讀 8104

--動態橫表轉縱表

--建表語句

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...