乙個行轉列的應用

2021-09-05 22:25:21 字數 1062 閱讀 6616

--> liangck小梁 於2008-10-15

--> 生成測試資料: #t

if object_id('tempdb.dbo.#t') is not null drop table #t

create table  #t (id int,姓名 varchar(4),類別 varchar(1),單位 varchar(6))

insert into #t

select 1,'張三','a','單位一' union all

select 2,'張三','b','單位三' union all

select 3,'張三','c','單位一' union all

select 4,'李四','a','單位二' union all

select 5,'李四','c','單位二' union all

select 6,'王五','c','單位三' union all

select 7,'王五','b','單位四'

--sql查詢如下:

select 姓名,

isnull(單位,(select top 1 單位

from #t

where 姓名=t.姓名

order by id desc)),

a,b,c

from

select 姓名,

max(case when 類別='b' then 單位 end) 單位,

max(case when 類別='a' then '有' else '無' end) a,

max(case when 類別='b' then '有' else '無' end) b,

max(case when 類別='c' then '有' else '無' end) c

from #t

group by 姓名

) as t

姓名          a    b    c

李四   單位二    有    無    有

王五   單位四    無    有    有

張三   單位三    有    有    有

(3 行受影響)

sql行轉列應用

資料表實際儲存格式 原始表為了適應我們某個平台框架的使用 該框架直接配置sql,平台自動實現資料的返回。不寫任何後端 同時方便前端不做任何處理。就採用sql的方式對元資料進行 行轉列運用。需求 返回前端的資料結構 需求翻譯 同乙個因子,對應兩個監測值,乙個是value,乙個是aqi。需要將同一時間,...

行轉列 pivot 的應用

碰上了行轉列的問題,想起了 pivot,我們先看看 pivot 是什麼 pivot 通過將表示式某一列中的唯一值轉換為輸出中的多個列來旋轉錶值表示式,並在必要時對最終輸出中所需的任何其餘列值執行聚合 旋轉?不就是行轉列嗎?再看看語法 以下是帶批註的 pivot 語法。select 非透視的列 第乙個...

乙個略微複雜的Sql行轉列例項

表結構如上,roomid為房間號,ispresent為1表示該房間有人,ispresent為0表示該房間沒人。現在需要統計每個房間以1開始 以0結束的時間,如果有連續的1則取第乙個1建立時間為開始時間,如果有連續的0則取最後乙個0建立時間為結束時間。先根據roomid和createtime排序,使每...