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日期时间格 ...
随机推荐
- LeetCode_3 sum closet
Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...
- 14.6.3.2 Configuring Multiple Buffer Pool Instances 配置多个Buffer Poll 实例:
14.6.3.2 Configuring Multiple Buffer Pool Instances 配置多个Buffer Poll 实例: 对于系统有多个buffer pools 在多个字节范围, ...
- SQL*Net message to client
SQL*Net message to client The server (foreground process) is sending a message to the client. 这个wait ...
- 【HDOJ】1422 重温世界杯
简单题. #include <stdio.h> #define MAXN 100005 int wi[MAXN], li[MAXN]; ]; int main() { int n, tot ...
- [LeetCode#265] Paint House II
Problem: There are a row of n houses, each house can be painted with one of the k colors. The cost o ...
- 【转】Android编译系统详解(三)——编译流程详解
原文网址:http://www.cloudchou.com/android/post-276.html 本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 1.概述 编译Androi ...
- ACM1720_A+Bcoming(进制转换的新思路)——代码超少哟!
using namespace std; int main() { int a,b; while(cin>>hex>>a>>b) { cout<<dec ...
- 一个awk命令的demo
/prefix_* | awk -F'\x3' '{print $2}' | awk -F'\x2' '{for(i=0; i<NF; i++)print $i}'> ~/20140819 ...
- [LeetCode] Distinct Subsequences 解题思路
Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...
- ReactiveCocoa Tutorial
ReactiveCocoa Tutorial – The Definitive Introduction: Part 1/2 ReactiveCocoa教程——明确的介绍:第一部分(共两部分) As ...