SQL 豎表變橫表

2021-10-25 03:29:10 字數 1865 閱讀 2765

豎表變橫表的情況,大多數是要將資料分組,然後用一行顯示所有組的資料。比如:

支付方式

支付金額

支付寶100

20支付寶

5060

那麼變橫表後,就變成:

支付寶150

80這裡介紹另一種情況,使用場景是,把按 key - value 形式儲存的資料,用 key 的各種值作為表頭,顯示在 ui 上。

直接看**看示例吧:

declare  @col1 nvarchar(100) = 'ns=2;s=myslr.dv1.db opc ua.other equipment.irradiation values α'

declare @col2 nvarchar(100) = 'ns=2;s=myslr.dv1.db opc ua.other equipment.irradiation values β'

--表一,原資料表

select p.id as 'id(α/β)',d.batch as batch,value as 'value'

from [dsc].[collectiondata] d inner join [dsc].[collectionpoint] p on d.collectionpointid = p.id

where

batch is not null and batch <> ''

and (tagname = @col1 or tagname = @col2)

--表二,給表新增資料型別列

select d.batch as batch,

case when p.tagname = @col1 then value else '' end as α,

case when p.tagname = @col2 then value else '' end as β

into #sourcetmp

from [dsc].[collectiondata] d inner join [dsc].[collectionpoint] p on d.collectionpointid = p.id

where

batch is not null and batch <> ''

and (tagname = @col1 or tagname = @col2)

select * from #sourcetmp order by batch

--表三,合併 batch 相同的。

select batch,

stuff((select '' + α from #sourcetmp t where batch = #sourcetmp.batch for xml path(''))

,1,0,'') as α,

stuff((select '' + β from #sourcetmp t where batch = #sourcetmp.batch for xml path(''))

,1,0,'') as β

from #sourcetmp

group by batch

order by batch

drop table #sourcetmp

上面 sql 得到的三張表如下:

表一:原資料表,我們的目標是,相同batch的資料,按id不同,顯示在一行。

id(α/β)

batch

value291

02920

281228

22表二:給表新增資料型別列,得到要顯示的表結構。

batchαβ

1012

2220

表三:合併 batch 相同的,得到最終橫表。

batchαβ

1202

20

Word橫表變豎表

在用word2010設計資料表時發現欄位太多了,在正常的頁面大小下橫表空間不夠,於是想將橫表轉為豎表,這樣欄位再多也不怕。可以找遍了選單功能項也沒發現有 橫豎轉換的,在網上查了,說word中複製貼上到excel,貼上時選擇 選擇性貼上 然後 轉置 注意分兩步操作,第一步將word的 原樣複製到exc...

SQL豎表轉橫表 橫表轉豎表

豎表轉橫表 豎表結構 name course grade 張三語文 75張三 數學80 張三英語 90李四 語文95 李四數學 55轉換後橫表結構 name 語文數學 英語張三 7580 90李四 9555 0sql語句 1 select name,2sum case course when 語文 ...

豎表轉橫表

今天遇到乙個要求將豎表轉換成橫表。以前看過豎表轉橫表但沒寫過,現記錄下來以供學習。任務大體要求如下 教師號 星期號 是否有課 有 有 有 有 有 寫一條sql語句讓你變為這樣的表 教師號 星期一 星期二 星期三 建表 create table teac info teac no number,day...