zoukankan      html  css  js  c++  java
  • SQL Server 行列转换(2)

    参考前一个例子http://www.cnblogs.com/insus/articles/1969896.html,现想使用另外一种方式来处理行列转换,实现下面效果:

     参考代码:

    View Code
    BEGIN
        
    IF OBJECT_ID ('[dbo].[#t]'IS NOT NULL
        
    DROP TABLE [dbo].[#t]
        
    CREATE TABLE [dbo].[#t]
        (
            id 
    INT IDENTITY(1,1),  --产生唯一字段,稍后为循环使用
            RId NVARCHAR(2),
            DT DATE,
            Hits 
    INT
        )
        
    --把需要处理的数据记录预存入这个临时表中
        INSERT INTO [dbo].[#t] SELECT [RId],[DT],[Hits] FROM [dbo].[RecordHits]    
    END

    --创建一个临时表,为处理记录所需要表最初表结构
    BEGIN
    IF OBJECT_ID('[dbo].[#rList]'IS NOT NULL
    DROP TABLE [dbo].[#rList]
    CREATE TABLE [dbo].[#rList]
    (
        DT DATE  
    --此字段将确定是以日期为记录
    )
    END

    BEGIN    
        
    --宣告一些变量,为循环记录时所使用
        DECLARE @N INT = 1@R INT
        
    DECLARE @RId NVARCHAR(2),@DT DATE
        
    DECLARE @Hits INT
        
        
    SET @R = (SELECT MAX([id]FROM [dbo].[#t])
        
    WHILE @N <= @R 
        
    BEGIN
            
    --取出每笔记录值
            SELECT @RId = [RId],@DT = [DT],@Hits = [Hits] FROM [dbo].[#t] WHERE [id] = @N        
            
            
    --判断此次循环的记录RId作为临时表[dbo].[#rList]一个字段,如果不存在,修改这个临时表,增加字段,反之,将略去执行下面SQL语句        
            EXECUTE('IF NOT EXISTS(SELECT name FROM tempdb..syscolumns where id=OBJECT_ID(''tempdb..[#rList]'') AND tempdb..syscolumns.name ='''+ @RId +''') ALTER TABLE tempdb..[#rList] ADD [' + @RId + '] NVARCHAR(10)')
            
            
    --判断此次循环的记录在临时表是否存在,如果不存在
            IF NOT EXISTS (SELECT [DT] FROM [dbo].[#rList] WHERE [DT] = @DT)
            
            
    --插入此笔记录
            INSERT INTO [dbo].[#rList]([DT]VALUES (@DT)    
            
            
    --更新记录。
            EXECUTE('UPDATE [dbo].[#rList] SET ['+ @RId +'] = '''+ @Hits +''' WHERE [DT] = '''+ @DT +'''')
            
    --循环下一笔
            SET @N = @N + 1
        
    END--结束循环
    END
        
    --查询处理结果
        SELECT * FROM [dbo].[#rList]    
  • 相关阅读:
    EF 简单的 CRUD、分页 代码笔记
    C#中的正则 Regex类
    动态字符串 Stringbuilder类
    C# 字符串操作
    集合简单总结 ArrayList、List、Hashtable、Dictionary
    C#面向对象2 静态类、静态成员的理解
    C#面向对象1 类 以及 类的继承(new、ovverride)
    无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它
    WebClient上传音频文件
    发布网站详细步骤(.Net)
  • 原文地址:https://www.cnblogs.com/insus/p/1970707.html
Copyright © 2011-2022 走看看