當前位置:首頁 » 編程語言 » sql中橫表格怎麼變成豎表格
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql中橫表格怎麼變成豎表格

發布時間: 2023-08-04 15:29:58

① 在sql里,如何將橫向數據改成縱向數據結構

您好,行列轉換等經典SQL語句
參考資料:http://blog.csdn.net/kiki113/archive/2009/04/24/4105929.aspx
1.--行列轉換
原表: 姓名 科目 成績
張三 語文 80
張三 數學 90
張三 物理 85
李四 語文 85
李四 物理 82
李四 英語 90
李四 政治 70
王五 英語 90
轉換後的表: 姓名 數學 物理 英語 語文 政治
李四 0 82 90 85 70
王五 0 0 90 0 0
張三 90 85 0 80 0
實例:
create table cj --創建表cj
(
ID Int IDENTITY (1,1) not null, --創建列ID,並且每次新增一條記錄就會加1
Name Varchar(50),
Subject Varchar(50),
Result Int,
primary key (ID) --定義ID為表cj的主鍵
);
--Truncate table cj
--Select * from cj
Insert into cj
Select '張三','語文',80 union all
Select '張三','數學',90 union all
Select '張三','物理',85 union all
Select '李四','語文',85 union all
Select '李四','物理',82 union all
Select '李四','英語',90 union all
Select '李四','政治',70 union all
Select '王五','英語',90
--行列轉換
Declare @sql varchar(8000)
Set @sql = 'Select Name as 姓名'
Select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result else 0 end) ['+Subject+']'
from (select distinct Subject from cj) as cj --把所有唯一的科目的名稱都列舉出來
Select @sql = @sql+' from cj group by name'
Exec (@sql)
2. 行列轉換--合並
原表: 班級 學號
1 1
1 2
1 3
2 1
2 2
3 1
轉換後的表: 班級 學號
1 1,2,3
2 1,2
3 1

實例:
Create table ClassNo --創建表ClassNo
(
ID Int IDENTITY(1,1) not null, --創建列ID,並且每次新增一條記錄就會加1
Class Varchar(50), --班級列
Number Varchar(50), --學號列
Primary Key(ID) --定義ID為表ClassNo的主鍵
);
--Truncate Table ClassNo
--Select * from ClassNo
Insert Into ClassNo
Select 1,1 Union all
Select 1,2 Union all
Select 1,3 Union all
Select 2,1 Union all
Select 2,2 Union all
Select 3,1
創建一個合並的函數
--Drop Function KFReturn
Create Function KFReturn(@Class Varchar(50))
Returns Varchar(8000)
as
Begin
Declare @str Varchar(8000)
Set @str = ''
Select @str = @str + cast(Number as Varchar(50)) + ',' from ClassNo Where Class = @Class
Set @str = SubString(@str,1,len(@str)-1)
Return(@str)
End
調用自定義函數得到結果
Select Distinct Class,dbo.KFReturn(Class) From ClassNo
3:列轉行
--Drop Table ColumnToRow
Create table ColumnToRow
(
ID Int IDENTITY(1,1) not null, --創建列ID,並且每次新增一條記錄就會加1
a int,
b int,
c int,
d int,
e int,
f int,
g int,
h int,
Primary Key(ID) --定義ID為表ColumnToRow的主鍵
);
--Truncate Table ColumnToRow
--Select * from ColumnToRow
Insert Into ColumnToRow
Select 15,9,1,0,1,2,4,2 Union all
Select 22,34,44,5,6,7,8,7 Union all
Select 33,44,55,66,77,88,99,12
Declare @sql Varchar(8000)
Set @sql = ''
Select @sql = @sql + rtrim(name) + ' from ColumnToRow union all Select ' from SysColumns Where id = object_id('ColumnToRow')
Set @sql = SubString(@sql,1,len(@sql)-70)
--70的長度就是這個字元串'from ColumnToRow union all Select ID from ColumnToRow union all Select ',因為它會把ID這一列的值也算進去,所以要把它截掉
Exec ('Select ' + @sql + ' from ColumnToRow')

② SQL中的統計加橫表轉縱表

根本沒涉及橫縱。
select a.*,b.軍人人數,c.武警人數 from
(select 所在位置,count(*) as 警察人數 from 表 where 職務='警察' group by 位置) as a left jion
(select 所在位置,count(*) as 軍人人數 from 表 where 職務='軍人' group by 位置) as b
on a.所在位置=b.所在位置 left jion
(select 所在位置,count(*) as 武警人數 from 表 where 職務='武警' group by 位置) as c on a.所在位置=c.所在位置

③ sql 橫表變豎表 動態語句怎麼寫

1、首先 日期沒有出現在Group里
2、其次,組成動態的【,isnull(sum(...))】沒有去掉最前面的那個逗號
3、感覺這個語句肯定不會執行成功,最好你把表結構給出,並且給出示例結果來。

④ SQL 怎麼把橫向數據變成豎向數據

隨緣寫法···可能有更精簡的,我這就趕著想趕著寫的 你看看能看懂不,如果覺得對不懂可以聯系我

select
nn.客戶 客戶,
nn.昵稱 昵稱,
nn.補單日期1 補單日期1,
nn.業務員1 業務員1,
nn.補單日期2 補單日期2,
nn.業務員2 業務員2,
nn.補單日期3 補單日期3,
nn.業務員3 業務員3,
nn.補單日期4 補單日期4,
nn.業務員4 業務員4,
nn.業務員1 首選業務員,
nn.業務員2||'-'||nn.業務員3||'-'||nn.業務員4 候選業務員
from (
select tt.a2 客戶,tt.a3 昵稱,wm_concat (case when tt.top=0 then tt.a0 else '' end) 補單日期1,
wm_concat (case when tt.top=0 then tt.a4 else ''end) 業務員1,
wm_concat (case when tt.top=1 then tt.a0 else ''end) 補單日期2,
wm_concat (case when tt.top=1 then tt.a4 else ''end) 業務員2,
wm_concat (case when tt.top=2 then tt.a0 else ''end) 補單日期3,
wm_concat (case when tt.top=2 then tt.a4 else ''end) 業務員3,
wm_concat (case when tt.top=3 then tt.a0 else''end) 補單日期4,
wm_concat (case when tt.top=3 then tt.a4 else ''end) 業務員4
from
(
select zz.* from
(
select a.*,(select count(1) from a a1 where a1.a2=a.a2 and a.a0<a1.a0) top from a ORDER BY A2,A0 DESC
) zz
where
zz.top<4
) tt group by tt.a2,tt.a3
) nn



⑤ sql developer查詢出來的數據默認是橫著顯示,怎樣將查詢的數據豎著顯示例如下圖所示

你問的是 Oracle自己的 sql developer 吧

在查詢結果的表格 的 窗口中,

右鍵 --> 單個記錄視圖

即可。

⑥ 表格橫轉豎怎麼轉換

具體操作如下:
1、選蘆游定需要由橫行變豎列的表格範圍。
2、單擊右鍵,選擇「復制」。
3、選擇需要新建豎列表格的位置,可選擇在該excel的其他sheet中渣嘩哪的位置或者其他excel中的位置。
4、單擊滑鼠右鍵,然後點擊選擇性粘貼後會彈出選項窗口。
5、左鍵單擊勾選上「轉置」,然後點擊確定。
MicrosoftOfficeforMac:在1989年時在Mac平台上推出,這一版的Office中包含了Word4.0、Excel2.20和PowerPoint2.01。此版本比運作在Windows平台上的Office更早被推出。MicrosoftOffice1.5forMac:在1991年時推出,其中Excel升級為Excel3.0。是首套支持如碼蘋果電腦System7操作系統的Office。MicrosoftOffice2.9forMac:在1992年時推出,其中Excel4.0是首套支持新AppleScript的軟體。