SQL Server 表字段值转换成字段名称(二)
上次写了个比较简单的只有两个字段的例子,经要求在写个 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 表字段值转换成字段名称(二)的更多相关文章
- SQL Server 表字段值转列名 示例
前几天,同事问我怎样把字段值转换成字段列,就写了一个最简单的Demo分享一下. 代码如下: -- 创建测试表以及添加测试数据create table #temp(a money,b varchar(1 ...
- sql 在将 nvarchar 值 转换成数据类型 int 时失败。
假设有存储过程:proc_test2 create proc proc_test2 @Id int begin as declare @sql varchar(max) @sql = 'select ...
- 修改sql server表字段的字符串
网站标题被注入黑链接,使用sql脚本update修改字段内的字符串截取UPDATE [qds0460132_db].[dbo].[Blood_News] SET [Blood_Name] = SU ...
- 获得、修改 SQL Server表字段说明
SELECT ( then d.name else '' end) 表名, a.colorder 字段序号, a.name 字段名, g.[value] AS 字段说明 FROM syscolumns ...
- sql server like 在将值转换成数据类型int失败
select * from table where title like '%'?'%'; 采用? 传参会报错:sql server like 在将值转换成数据类型int失败 select * fro ...
- SQL3120W 不能将xx的字段值转换成 INTEGER值
一次用DB2 Load/Import导入数据时,报错,提示SQL3120W 不能将xx的字段值转换成 INTEGER值,但目标列不可为空.未装入该行. 目标表: CREATE TABLE TEST( ...
- SQL Server日期时间格式转换字符串详解 (详询请加qq:2085920154)
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...
- SQL Server日期时间格式转换字符串
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...
- SQL Server日期时间格式转换字符串详解
本文我们主要介绍了SQL Server日期时间格式转换字符串的相关知识,并给出了大量实例对其各个参数进行对比说明,希望能够对您有所帮助. 在SQL Server数据库中,SQL Server日期时间格 ...
随机推荐
- bzoj1053
不难发现,要让约数尽可能多,那么素因子越小的的指数一定越大可能的素因数的种类也不超过10种然后直接暴搜即可 ..] ,,,,,,,,,); var n,ant,ans:int64; procedure ...
- 两次fopen不同的文件返回相同的FILE* 地址
最近接触一个垃圾程序,出现一个奇怪的bug,现象是两次fopen不同的文件返回相同的FILE*地址,第二次返回的FILE*有时候无端端的就被关闭了.以下代码是对这个bug的概括: auto fp1 = ...
- ServiceStack.Redis 之 IRedisTypedClient
IRedisTypedClient IRedisTypedClient类相当于IRedicClient的强类型版,其方法与属性大多数与IRedisClient类似. 它支持在Redis中使用Linq查 ...
- ServiceStack.Redis之IRedisClient
事实上,IRedisClient里面的很多方法,其实就是Redis的命令名.只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这 ...
- 什么是系统,什么是算法 -- lemon OA 系统学习总结
一.对于模块划分的理解 对于一个大型(这里还只是一个中型系统)系统来说,代码的编写不是一日而就的,层次的明细也不是一眼就能看清楚的. 在这种情况下,需要想好,最好是由上而下地想好. 能够模块式地划分最 ...
- (转载)vsftpd简易配置
(转载)http://licong.blog.51cto.com/542131/145748/ 写篇关于vsftp配置的文章,加深自己的记忆,便于自己查阅,同时也希望能给其他需要的朋友一点借鉴.本文如 ...
- 游戏开发设计模式之子类沙盒模式(unity3d 示例实现)
积累提供所有操作(的实现)来定义子类的行为用一个最简单的例子来讲解这个模式玩家操纵的英雄也就是这个游戏的主角会有许多技能,我们想定义许多不同的技能,来让玩家使用.首 先我们定义一个skillBase类 ...
- ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction差别
使用方法:@Html.Action(action, controller)加载局部页面.例如在模板页中使用:@Html.Action("Contact", "Compan ...
- MT9v024总结
S1: A typical READ or WRITE sequence begins by the master sending a start bit. After thestart bit, t ...
- Java 集合框架 LinkedHashSet 和 LinkedHashMap 源码剖析
总体介绍 如果你已看过前面关于HashSet和HashMap,以及TreeSet和TreeMap的讲解,一定能够想到本文将要讲解的LinkedHashSet和LinkedHashMap其实也是一回事. ...