豎表變橫表的情況,大多數是要將資料分組,然後用一行顯示所有組的資料。比如:
支付方式
支付金額
支付寶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...