• sql 创建表变量,临时表


    基本原则:能用表变量就用表变量.实在不行才使用临时表
    表变量主要是开销系统的内存,而临时表则使用tempdb.对于小数据量的中间数据存储,可以使用表变量,而当需要临时保存的数据很大时,建议使用临时表.
    declare @tb table(id int,name varchar(50),age int--创建表变量

    insert @tb select 1,'nn',14
    select * from @tb


    create table #t(id int,name varchar(50),years int,nums int)--创建临时表

    insert #t select 1,'nn',14,15
    union all select 1,'nn',14,15
    insert into #t  exec sp_gets  --可以用于存储过程或动态SQL结合

    select * from #t
    drop table #t --删除临时表


    实例

    ------------------------------------------------------------------ ----------------------------

    declare @tab table
    (
        id int,
        name nvarchar(50)
    )
    insert into @tab(id,name)
    select person_id,1 from personinfo
    select * from @tab
    ------------------------------------------------------------------ ----------------------------


    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:    <Jack zhang>
    -- Create date: <2007-08-04>
    -- Description:   <获取家庭吸烟总量(创建表变量)>
    -- =============================================

    ALTER PROCEDURE [dbo].[Family_SmokeTotal]
    (@Family_ID int)
    AS
    declare @tab table(Person_ID int)
    insert into @tab(Person_ID)
    select Person_ID from PersonInfo where Family_ID=@Family_ID
    select Sum(SmokeCount) '家庭吸烟总数' from PersonActionInfo where Person_id  in (select Person_id from @tab)

    //临时表
    CREATE TABLE #tmp
    (
     rq NVARCHAR(10),
     shengfu NVARCHAR(1)
    )
    INSERT into #tmp select'2005-05-09','胜'
    Insert into #tmp select'2005-05-09','胜'
    insert into #tmp select'2005-05-09','负'
    insert into #tmp select'2005-05-09','负'
    insert into #tmp select'2005-05-10','胜'
    insert into #tmp select'2005-05-10','负'
    insert into #tmp select'2005-05-10','负'

    SELECT rq,sum(case when shengfu='胜' then 1 else 0 end)'胜',sum(case when shengfu='负' then 1 else 0 end)'负'
    from
    #tmp
    group by rq

    drop table #tmp

  • 相关阅读:
    Java多线程之赛跑游戏(含生成exe文件)
    JavaSE之绘制菱形
    JavaSE项目之员工收录系统
    深度解析continue,break和return
    如何查看yum安装路径
    转载 linux umount 时出现device is busy 的处理方法--fuser
    linux安装扩展总结
    linux 编译安装amqp
    vmware 实现linux目录映射window本地目录
    yaf学习之——生成yaf示例框架
  • 原文地址:https://www.cnblogs.com/zhc088/p/1059936.html
Copyright © 2020-2023  润新知