• SQL Notes


    存储过程 + 事务

      ALTER Procedure  dbo.proc_Pets_MatingRequest_Update
        (@MRId int,@RequestStatus int ,@PetStatus int)
        AS
           Begin
               SET NOCOUNT ON;
               SET XACT_ABORT ON;
               BEGIN TRY
               BEGIN TRAN
               DECLARE @count int =0
               UPDATE dbo.Pets SET PetStatus = @PetStatus
                    WHERE PetId= (SELECT PetId FROM dbo.MatingRequests WHERE MRId = @MRId)
               SET @count += @@ROWCOUNT
               UPDATE dbo.MatingRequests SET RequestStatus = @RequestStatus
                    WHERE MRId = @mrid
               SET @count += @@ROWCOUNT
               IF(@count = 2) COMMIT TRAN
               ELSE ROLLBACK TRAN
               SELECT @count
               END TRY
               BEGIN CATCH
               IF XACT_STATE()=-1 ROLLBACK TRAN
               END CATCH
               SET NOCOUNT OFF
           End

      

    行列转换

    参考:http://www.cnblogs.com/zhangzt/archive/2010/07/29/1787825.html

    PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现

    PIVOT的一般语法是:PIVOT( 聚合函数(列) FOR 列 IN (…) )AS P

    完整语法:

    table_source

    PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) )

    UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现

    完整语法:

    table_source

    UNPIVOT( value_column FOR pivot_column IN(<column_list>) )

    各列类型需要一致。

    注意:PIVOT、UNPIVOT是SQL Server 2005的语法,使用需修改数据库兼容级别,在数据库属性->选项->兼容级别改为90。

    PS:pivot-以…为中心旋转

    实例:

    SELECT PetId,Field,Url
    FROM (
        SELECT PetId,[ImageUrl1],[ThumbnailUrl40],[ThumbnailUrl60],[ThumbnailUrl100],[ThumbnailUrl160],[ThumbnailUrl180],[ThumbnailUrl220],[ThumbnailUrl310],[ThumbnailUrl410],[ImageUrl2],[ImageUrl3],[ImageUrl4],[ImageUrl5],[HeadImage]
        FROM Pets WHERE PetId = 5011
        ) T UNPIVOT(
        Url FOR Field IN ([ImageUrl1],[ThumbnailUrl40],[ThumbnailUrl60],[ThumbnailUrl100],[ThumbnailUrl160],[ThumbnailUrl180],[ThumbnailUrl220],[ThumbnailUrl310],[ThumbnailUrl410],[ImageUrl2],[ImageUrl3],[ImageUrl4],[ImageUrl5],[HeadImage])
        ) P

      

     

     

     

     

  • 相关阅读:
    nginx 转发避免携带端口
    docker-compose 搭建php+nginx+mysql+redis
    20+个JavaScript单行代码
    IaaS,PaaS,SaaS 的区别
    C# String和StringBuilder的区别
    Vue基本语法
    Gitee仓库使用方法
    6个实例详解如何把if-else代码重构成高质量代码
    Redis常见问题
    winform程序打包成exe文件
  • 原文地址:https://www.cnblogs.com/huhunet/p/7402705.html
Copyright © 2020-2023  润新知