1. sql語句如何列變行
select 欄位名按照你要求的排序就行了
select a,b,c from tableName 那麼輸出就是 abc對應的順序
2. sql 查詢出一列內容,如何讓它成一行顯示。
進行行轉列下面是相關語法等
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>)
)
3. SQL語句: 多表查詢結果列轉行(並分組)
select t1.AUTOID,t2.AUTOID,t2.KEYWORD_EN from TAB_INFORMATION_KEYWORD t1
join TAB_KEYWORD_DICTIONARY t2 on t1.AUTOID = t2.AUTOID
我用的是MSSQL的內部連接,我沒用例子實踐過,希望這對你有點提示.大家一起學習
4. sql語句怎麼把列變成行
create table rotatetable1 (序號 int,company char(66),box_weight char(12),廢塑料numeric(10,2)),廢五金 numeric(10,2)),廢鋼鐵 numeric(10,2)),廢紙 numeric(10,2)),廢有色 numeric(10,2)),廢纖維 numeric(10,2)),其它 numeric(10,2)),合計 numeric(10,2)));
insert into rotatetable1(company,box_weight) select name ,'weight' from sum1 group by name;
insert into rotatetable1(company,box_weight) select name ,'box' from sum1 group by name;
update rotatetable1 set 廢塑料=box from sum1as a where a.name=rotatetable1.company and box_weight='box' and hsname='廢塑料';
update rotatetable1 set 廢塑料=weight from sum1as a where a.name=rotatetable1.company and box_weight='weight' and hsname='廢塑料';
::: :::
update rotatetable1 set 其它=box from sum1as a where a.name=rotatetable1.company and box_weight='box' and hsname='其它';
update rotatetable1 set 其它=weight from sum1as a where a.name=rotatetable1.company and box_weight='weight' and hsname='其它';
::: :::
update rotatetable1 set 合計=廢塑料+廢五金+廢鋼鐵+廢紙+廢有色+廢纖維+其它;
(所有涉及表的行列轉換均可按照這種方式實現。)
5. 如何用sql語句 把列 轉換成 一行 結果
1、最原始的方法,利用 select....union
select 欄位1 from 表名 where 條件 union select 欄位2 from 表名 where 條件 select 欄位3 from 表名 where 條件 ......
2、利用 SYS_CONNECT_BY_PATH函數
SELECT SYS_CONNECT_BY_PATH(欄位, '>') "Path"
FROM 表名
START WITH 條件
CONNECT BY PRIOR 條件;
6. sql server ,求sql 語句把單列的數據分為多行顯示
declare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + 費用 from a group by 費用
set @sql = '[' + @sql + ']'
exec ('select * from (select * from a) a pivot (max(金額) for 費用 in (' + @sql + ')) b')
7. SQL表列數據轉成行數據
create table #A03(AId varchar(30),
CardNo varchar(30),SumMoney money,Type varchar(30)) --臨時表
create table #A07(AId varchar(30),
CardNo varchar(30),SumMoney money,Type varchar(30))
insert into #A03 select AId,CardNo,SumMoney,Type from A
where AID='B6BA' and CardNo='996000010003'
insert into #A70 select AId,CardNo,SumMoney,Type from A
where AID='B6BA' and CardNo='996000010070'
select a.AID,a.CardNo,a.SumMoney,a.Type,
b.CardNo,b.SumMoney,b.Type
from #A03 a right join #A70 b on a.CardNo='996000010003' and b.CardNo='996000010070'
--你試試
8. 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')
希望對你的學習有幫助。
9. SQL 怎樣將查詢出某列的多行數據,變為一行顯示 通過SQL語句查詢出結果 AutoID cT
你好,你看看參考一下。
DECLARE@tTABLE(idint,valuevarchar(10))
INSERT@tSELECT1,'出國'
UNIONALLSELECT2,'回國'
SELECT[values]=STUFF((REPLACE(REPLACE((SELECTvalueFROM@tFORXMLPATH('')),'<value>',','),'</value>','')),1,1,'')
10. SQL語句怎麼實現幾列數據合並成一行
你這樣做的話 就這兩個表是不行的。
本來就是一對多的關系 你強行的要把其變成一對一的關系那是不可能。
如果你是要在程序里實現可以這樣:
001,a,10
001,b,10
001,c,10
寫到一個DataTable里
然後循環讀取行的第二和第三個值
在寫到一個字元串里