sql 行轉列 思想及示例

2021-06-16 08:53:29 字數 1059 閱讀 5904

sql 行轉列常常在具體的業務需要中出現難於處理的情況,使用開發難度增大。故再回顧下行轉列的思想與示例。

以下是詳細sql指令碼:

if exists

@in_column nvarchar(500)--要把資料轉成列的列名)as

begin

declare @queryfiled nvarchar(max) = '', --用於行轉列時的查詢字段

@sumfiled   nvarchar(max) = '', --用於轉列後的聚合計算字段

@sqlnvarchar(max) = ''; --用於查詢

select @sumfiled += 'sum(t.' + orderfood + ') ' + orderfood +',' from order_list group by orderfood;

set @sumfiled = left(@sumfiled,len(@sumfiled)-1);

select @queryfiled += orderfood + ',' from order_list group by orderfood

set @queryfiled = left(@queryfiled,len(@queryfiled)-1);

set @sql = 'select t.'+@in_showfiled+' 姓名,'+@sumfiled+' from 

(select '+@in_showfiled+','+@queryfiled+' from order_list

pivot(count('+@in_column+') for '+@in_column+' in('+@queryfiled+')) as p

) tgroup by t.'+@in_showfiled+'';

exec (@sql);

end--測試

declare @in_showfiled nvarchar(500) = 'orderuser',

@in_column nvarchar(500) = 'orderfood';

exec turncolumn @in_showfiled,@in_column

sql 行轉列 思想及示例

sql 行轉列常常在具體的業務需要中出現難於處理的情況,使用開發難度增大。故再回顧下行轉列的思想與示例。以下是詳細sql指令碼 if exists in column nvarchar 500 要把資料轉成列的列名 as begin declare queryfiled nvarchar max 用...

MySQL行轉列完整SQL示例

sql行轉列 create table student scores username varchar 10 學生姓名 subject varchar 10 科目名稱 score int 3 成績 insert into student scores values 張三 語文 86 insert i...

行轉列示例

if object id tb is not null drop table tb gocreate table tb 姓名 varchar 10 課程 varchar 10 分數 int insert into tb values 張三 語文 74 insert into tb values 張三...