zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    android中正确保存view的状态
    使用AudioTrack播放PCM音频数据(android)
    【录音】Android录音--AudioRecord、MediaRecorder
    (原创)初识cordova(一)
    忽略git中不需要进行版本管理的文件
    GitHub 小试
    通过View.post()获取View的宽高
    org.json.JSONObject的getString和optString使用注意事项
    android---EditText的多行输入框
    【转】我赌5毛你没见过这样的SpannableString
  • 原文地址:https://www.cnblogs.com/wbl168/p/SQL_Col_ValueToName.html
Copyright © 2011-2022 走看看