SQL Server 表字段值轉換成欄位名稱 二

2022-08-26 23:21:31 字數 1628 閱讀 5829

上次寫了個比較簡單的只有兩個欄位的例子,經要求在寫個  3 個字段的示例 ,貼上來與大家共勉一下   如果你們有更好的方法,提供一下, 感激不盡。

示例如下:

/*--drop table temp_testcol_valuetoname;

-- 建立測試表 (前提 每天每個會員只有一條記錄)

create table temp_testcol_valuetoname

(username nvarchar(50), -- 會員名

mymoney money, -- 金額

addtime datetime -- 時間

)-- 新增測試資料

insert into temp_testcol_valuetoname values('張三',10,'2013-11-01')

insert into temp_testcol_valuetoname values('張三',40,'2013-11-02')

insert into temp_testcol_valuetoname values('張三',1,'2013-11-03')

insert into temp_testcol_valuetoname values('張三',6,'2013-11-04')

insert into temp_testcol_valuetoname values('李四',40,'2013-11-02')

insert into temp_testcol_valuetoname values('李四',100,'2013-11-03')

insert into temp_testcol_valuetoname values('李四',60,'2013-11-06')

*/-- **查詢結果

-- username 1 2 3 4 6

-- 張三 10 40 1 6 0

-- 李四 0 40 100 0 60

-- 查詢結果

declare @sql nvarchar(max)='', -- 組裝的sql語句

@month varchar(7)='2013-11'; -- 需要查詢的年月(只需要改變這個值)

select @sql=@sql+ (case @sql when '' then '' else ',' end)

+'max(case day(addtime) when '+cast(d as varchar)+' then mymoney else 0 end) ['+cast(d as varchar)+']'

from (select distinct day(addtime) d from temp_testcol_valuetoname where convert(varchar(7),addtime,120)=@month) a;

set @sql='select username [username],'+@sql+' from temp_testcol_valuetoname where convert(varchar(7),addtime,120)='''+@month+''' group by username;';

exec sp_executesql @sql;

SQL Server 表字段值轉列名 示例

前幾天,同事問我怎樣把字段值轉換成欄位列,就寫了乙個最簡單的demo分享一下。如下 建立測試表以及新增測試資料 create table temp a money,b varchar 10 insert into temp a,b values 10,1點 insert into temp a,b ...

表字段的處理 Sql Server

目錄 表的建立 建立約束 檢視約束 刪除約束 插入資料 增加字段 刪除字段 create table student 學號 char 8 not null,姓名 char 8 not null,性別 char 2 not null,出生日期 date default getdate 班級 char ...

對Sql Server表字段進行修改

通用式 alter table 表名 add 欄位名 字段屬性 default 預設值 default 是可選引數 增加字段 alter table 表名 add 欄位名 smallint default 0 增加數字字段,整型,預設值為0 alter table 表名 add 欄位名 int de...