sqlpivotfor
❶ 急急急!!! sql語句如何將豎排的記錄變橫排並且放置在同一單元格內,跪求大神指點,萬分感謝!!!
selectname姓名,col1+''+col2+''+col3參保類型
from(
selectname,'失業保險'ascol1,'醫療保險'ascol2,'工傷保險'ascol3fromtable1
pivot(max(type)fortypein([失業保險],[醫療保險],[工傷保險]))
aspvt)tab
lz試一下,有問題再追問。
❷ sql中如何將pivot轉置後的動態結果集插入到已有的表中
insert into #ForMonth exec(@Sql)使用這樣的SQL語句,首先是表#ForMonth必須存在,如果不存在這個表,要用select * into #ForMonth from 表名
你可以這樣寫試一下(只後面幾句,前面的不變)
SET @Sql='select * into #ForMonth from #TotalSalesForMonth pivot (sum(total) for monthN in ('+@str+') ) as pvt '
drop table #ForMonth --刪除臨時表exec(@Sql)
❸ SQL pivot函數只能對對值轉換,不能對文本轉換么
where convert(int,字元欄位)=數值
❹ 請教SQL server 中pivot的詳細用法及語法規則
SQL server 中使用 PIVOT關系運算符將表值表達式更改為另一個表。PIVOT 通過將表達式某一列中的唯一值轉換為輸出中的多個列來旋轉表值表達式,並在必要時對最終輸出中所需的任何其餘列值執行聚合。
PIVOT 語法為SELECT <非透視的列>, [第一個透視的列],...[最後一個透視的列] FROM (<生成數據的 SELECT 查詢>) PIVOT (<聚合函數>(<要聚合的列>) FOR [<包含要成為列標題的值的列>] IN ( [第一個透視的列],... [最後一個透視的列]) ) AS <透視表的別名> <可選的 ORDER BY 子句>。
(4)sqlpivotfor擴展閱讀:
由於SQL Server 2005有了新的PIVOT運算符,就不再需要CASE語句和GROUP BY語句了。(每個PIVOT查詢都涉及某種類型的聚合,因此可以忽略GROUP BY語句。)PIVOT運算符能夠利用CASE語句查詢實現相同的功能,但是可以用更少的代碼就實現,而且看起來更漂亮。
PIVOT運算符前面接的一定是一條查詢語句。 有與PIVOT 執行相反的運算符UNPIVOT,將表值表達式的列轉換為列值。相比於直接通過union來實現列轉行,使用UNPIVOT可以讓sql語句變得更加簡潔。相對而言,理解難度會上升,可讀性下降。
❺ sql動態多行轉列,PIVOT怎麼能轉兩列
動態最好用存儲過程(年月不確定,列名不確定),對sql進行拼接,再寫一個第二條語句關於辦結的,然後把這個受理與辦結通過事項進行關聯查詢得到兩列結果就好
❻ Oracle中如何使用sql把數據轉換
這里有一個前提,就是每個地方只有一次到件,一次發件,如果出現兩次以上的到件或者發件,那麼根據我寫的sql只能取到最大值,也就是說只會有一條記錄,這件要注意。如果存在兩條以上,那麼就要根據業務去判斷了,或者在下面那條(2)語句加group的條件,或者用其他的函數(不用max)等等。要根據實際需求寫sql,切忌生搬硬套。
(1)不知道你是什麼版本的oracle,如果是11Gr2以上的,那麼可以用pivot(具體的使用方法自己去找找吧,網上有很多,我只寫你例子里的語句)
select * from table
pivot (max(時間) for 收發件 in ('發件' as 發件時間,'到件'as 到件時間));
(2)其他的方式 case when也可以,稍微麻煩一點。decode和case when類似。
select 省份,max(case when 收發件='到件' then 時間 end) 到件時間,max(case when 收發件='發件' then 時間 end) 發件時間 from table group by 省份