Ⅰ sql語句 列轉行
-- ========================= PIVOT 行列轉置 ===========================
-- 1、【行列轉置PIVOT】
declare @Score table(StuNo varchar(10), StuName varchar(50), CourseName varchar(50), Score int)
insert into @Score
select '1', 'Tom', 'Math', 80 union all
select '1', 'Tom', 'English', 82 union all
select '1', 'Tom', 'Geography', 84 union all
select '2', 'Jone', 'Math', 79 union all
select '2', 'Jone', 'English', 88 union all
select '2', 'Jone', 'Geography',86
select * from @Score
SELECT StuNo, StuName, Math, English, [Geography]
FROM @Score PIVOT (MAX(Score) FOR CourseName in (Math, English, [Geography]) ) AS ScoreList
ORDER BY StuNo
-- 2、【列行轉置UNPIVOT】
declare @ScoreList table(StuNo varchar(10), StuName varchar(50), Math int, English int, [Geography] int)
insert into @ScoreList
select '1', 'Tom', 80, 82, 84 union all
select '2', 'Jone', 79, 88, 86
select * from @ScoreList
SELECT StuNo, StuName, CourseName, Score
FROM @ScoreList UNPIVOT (Score FOR CourseName in (Math, English, [Geography]) ) AS ScorePvtTable
ORDER BY StuNo
Ⅱ sqlserver 怎麼列轉行
PIVOT 用於將列值旋轉為列名(即行轉列),在 SQL Server 2000可以用聚合函數配合CASE語句實現
PIVOT 的一般語法是:PIVOT(聚合函數(列) FOR 列 in (…) )AS P
注意:PIVOT、UNPIVOT是SQL Server 2005 的語法,使用需修改資料庫兼容級別(在資料庫屬性->選項->兼容級別改為 90 )
SQL2008 中可以直接使用
完整語法:
table_source
PIVOT(
聚合函數(value_column)
FOR pivot_column
IN(<column_list>)
)
View Code
UNPIVOT 用於將列明轉為列值(即列轉行),在SQL Server 2000可以用UNION來實現
完整語法:
table_source
UNPIVOT(
value_column
FOR pivot_column
IN(<column_list>)
)
Ⅲ sql 列轉行
先建一張轉換後的表
create table changed
(
id number,
key varchar2(10),
val varchar2(10)
)
然後執行下面的插入語句
insert all
into changed(id,key,val) values(id,'a',a)
into changed(id,key,val) values(id,'b',b)
into changed(id,key,val) values(id,'c',c)
into changed(id,key,val) values(id,'d',d)
into changed(id,key,val) values(id,'e',e)
select id,a,b,c,d,e from change;
如果需要繼續添加,就模仿上面的格式寫好了,最後別忘記commit;
Ⅳ sql2008列轉行語句
http://blog.csdn.net/greystar/article/details/5660645
看看上面三種方法是不是你需要的。
Ⅳ SQL 語句列轉行
TB_NAME_A Count(TC_TA_ID=TA_ID && TC_TB_ID=TB_ID_A)
TB_NAME_B Count(TC_TA_ID=TA_ID && TC_TB_ID=TB_ID_B)
TC_TB_ID=TB_ID_A,TC_TB_ID=TB_ID_B 這個TB_ID_A,TB_ID_B 代表什麼?
Ⅵ sql語句列轉行的問題
sqlserver2005及以上版本
CREATETABLEtest(idINT,[USER_ID]VARCHAR(10),door_idVARCHAR(50))
INSERTINTOdbo.test
(id,USER_ID,door_id)
SELECT1,'U100174','0000000015;0000000018;;'
UNIONALL
SELECT2,'U120225','0000000023;'SELECTA.ID,USER_ID,B.door_id
FROM(
SELECTid,USER_ID,door_id=CONVERT(xml,'<root><v>'+REPLACE(door_id,';','</v><v>')+'</v></root>')FROMtest
)A
OUTERAPPLY(
SELECTdoor_id=N.v.value('.','varchar(100)')FROMA.door_id.nodes('/root/v')N(v)
)B
WHEREISNULL(b.door_id,'')<>''
結果:
1 U100174 0000000015
1 U100174 0000000018
2 U120225 0000000023
Ⅶ SQL:列轉行,如何實現,最好使用存儲過程
比如:
表: Table
欄位及數據:
FNO Item
1 a
2 b
3 c
代碼如下:
Creat tabel #temp(FNO int)
Declare @a int ,@b int,@c Varchar
Set @a=1
Select @b=Count(*) From Table
While @a<=@b
Select @c=item From Table Where FNO=@a
Exec ('ALTER TABLE #temp ADD' + @C + 'CHAR(50)')
Set @a=@a+1
End
Select * From #Temp
直接在這里寫的,沒有測試過語法,但思路應該是沒問題的。
Ⅷ sql語句列轉行
我整理的行轉列的問題:
--創建tb表
createtabletb(姓名varchar(10),課程varchar(10),分數int)
insertintotbvalues('張三','語文',74)
insertintotbvalues('張三','數學',83)
insertintotbvalues('張三','物理',93)
insertintotbvalues('李四','語文',74)
insertintotbvalues('李四','數學',84)
insertintotbvalues('李四','物理',94)
go
select*Fromtb
--SQLSERVER2000靜態行轉列
select姓名as姓名,
max(case課程when'語文'then分數elsenullend)語文,
max(case課程when'數學'then分數elsenullend)數學,
max(case課程when'物理'then分數elsenullend)物理
fromtb
groupby姓名
--SQLSERVER2000動態SQL,指課程不止語文、數學、物理這三門課程。(以下同)
declare@sqlvarchar(8000)
set@sql='select姓名'
select@sql=@sql+',max(case課程when'''+課程+'''then分數else0end)['+課程+']'
from(selectdistinct課程fromtb)asa
set@sql=@sql+'fromtbgroupby姓名'
exec(@sql)
--SQLSERVER2005靜態SQL。
select*from(select*fromtb)apivot(max(分數)for課程in(語文,數學,物理))b
--SQLSERVER2005動態SQL。
declare@sqlvarchar(8000)
select@sql=isnull(@sql+'],[','')+課程fromtbgroupby課程
set@sql='['+@sql+']'
exec('select*from(select*fromtb)apivot(max(分數)for課程in('+@sql+'))b')
希望對你的學習有幫助。
Ⅸ oracle的sql語句列轉行
不同人的uuid是不一樣的嗎?
select
(selectzfromtabnameaawherezmc='姓名'andaa.uuid=a.uuid)姓名,
(selectzfromtabnameaawherezmc='年齡'andaa.uuid=a.uuid)年齡,
(selectzfromtabnameaawherezmc='英文名稱'andaa.uuid=a.uuid)英文名稱,
(selectzfromtabnameaawherezmc='性別'andaa.uuid=a.uuid)性別,
(selectzfromtabnameaawherezmc='入職日期'andaa.uuid=a.uuid)入職日期,
(selectzfromtabnameaawherezmc='個人信息'andaa.uuid=a.uuid)個人信息
from(selectdistinctuuidfromtabname)a
Ⅹ sql列轉行,如何把表轉化為這個結果一共一行 一列.如何實現.
通用的辦法是用動態sql解決:
declare@sqlvarchar(2000);
set@sql='select''';
select@sql=@sql+列名+','from表名;
select@sql=left(@sql,len(@sql)-1)+''''
exec(@sql);
此外,SQL Server2005以上版本可以用XML Path解決。
SELECT列名+','FROM表名FORXMLPATH('')
這樣將直接得到'a,b,c,d,d,e,',需要進一步處理去掉最後的逗號