SQL 同乙個字段多個值,實現動態行轉列

2021-09-26 22:15:39 字數 1153 閱讀 1930

--用動態sql實現行轉列。因用到了row_number,只適用於sql server 2005及以上版本

--測試資料

with

[user](id,name,roleid)

as(select 1,'bobo','r1' union all

select 2,'coco','r1' union all

select 3,'dodo','r1' union all

select 4,'eoeo','r2' union all

select 5,'fofo','r2'),

[role](id,name)

as(select 'r1','admin' union all

select 'r2','user')

--兩表聯合查詢後暫存入臨時表

select b.id roleid,b.name rolename,a.name username,row_number() over (partition by b.id order by a.id) seq

into #t

from [user] a

inner join [role] b on a.roleid=b.id;

--拼接動態sql

declare @sql varchar(max);

set @sql='';

select @sql=@sql+

',max(case seq when '+cast(tt.seq as varchar)+' then username else '''' end) user'+cast(tt.seq as varchar)

from (select distinct seq from #t) tt

order by seq;

set @sql='select rolename'+@sql+' from #t group by roleid,rolename';

--列印動態sql

select @sql;

--執行動態sql

exec(@sql);

--刪除臨時表

drop table #t;

select distinct seq from #t    

distinct 很重要。。。。

sql 同乙個字段按照不同條件更新字段值

專案中用到sql更新乙個欄位的值,同乙個字段根據不同條件來更新不同的值,記錄一下,也希望可以幫到其他人。公式 update 表名 set 字段 case when 條件1 then 值1 when 條件2 then 值2 else 預設值3 end例子 update sys anchor set i...

mybatis同乙個字段,多次模糊查詢

問題描述 在乙個欄位上執行多關鍵字模糊查詢,拼接多個 like 實現方式 and條件 方式一 直接使用like語句拼接。select from table where field like and field like 按照上述語句寫的sql的like 拼接的數量是固定的。方式二 mybatis f...

SQL如何在同乙個字段不同型別進行條件查詢統計總數

如 a 字段裡面包含 1 2 3三種型別的資料,但是三種型別的資料可能是不同的人錄入的,這時候要根據不同的人進行這三種型別進行數量統計 如下 以下則是sql實現 select f olp man as 巡檢員 f plan count as 巡檢週期 count as 巡檢數量 select cou...