sql语句的常用逻辑处理

#table @table 的区别

#定义的表不drop不会释放

@定义的表会自动释放


创建#table有两种方式:

1.select * into #T from tablename

2.CREATE TABLE #tablename( 
coumnname1 NVARCHAR(36)
 )


创建@table也有两种方式用法同上

1.select * into @v from tablename

 2.DECLARE @V TABLE
            (
              columnname1 INT ,
              columnname 2 NVARCHAR(36)
            )

判断语句

DECLARE @flag int
SET @flag =0
if @flag=0
begin


PRINT('我是0');
end 
else if @flag=1
begin


PRINT('我是1');
end

用分组筛选批量重复


row_number over()生成的列可以作为查询条件。

实现方式:
在sqlserver下编写语句:
SELECT * FROM ( select     row_number() over(partition by ProjectName,BusinessModelName,City,mtime order by VersionStartTime DESC) as rownum ,* FROM ( SELECT IndicatorValue,VersionStartTime,ProjectName,BusinessModelName,City,MONTH(StatisticalCycle) mtime  FROM  dbo.IncomeTargetAct WHERE  PlanActDataType=2 AND StatisticalCycle >=CAST(CAST(YEAR(GETDATE()) AS VARCHAR(4)) as datetime) AND ValidStatus= 1 AND VersionEndTime IS NULL   AND OrganizationName=@OrgName ) AS T  )AS at WHERE rownum = 1 
临时表绑定数据
 --写字楼计划监控
  DECLARE @plan TABLE (
Businessname [nvarchar](36), --
PlanValue DECIMAL(18,4), --
PlanTotalValue DECIMAL(18,4), --
WarnValue DECIMAL(18,4) --
)


--绑定第一列
INSERT INTO @plan  (
column


)
select cname from table
--绑定第二列
  UPDATE   @plan
  SET    PlanValue =(SELECT IndicatorValue FROM #T t WHERE t.bussinessmodename =Businessname AND t.Indicatorname='我')
--绑定第三列
  UPDATE   @plan
  SET    PlanTotalValue =(SELECT IndicatorValue FROM #T t WHERE t.bussinessmodename =Businessname AND t.Indicatorname='实')
  --绑定第四列
  UPDATE   @plan
  SET    WarnValue =(SELECT IndicatorValue FROM #T t WHERE t.bussinessmodename =Businessname AND t.Indicatorname='自')
 
 
 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值