SQLSERVER 常用

SQL复制数据表 (select * into 与 insert into)

1:复制表结构及数据到新表

select * into 目标表名 from 源表名

2:备份表的一部分列(不写*而写出列的列表)

select 列名1,列名2,列名3 into 目标表名 from 源表名

3:备份表的一部分行(加WHERE条件)

select * into 目标表名 from 源表名 where id<10

4:备份表的一部分列(不写*而写出列的列表)和一部分行(加WHERE条件)

select 列名1,列名2,列名3 into 目标表名 from 源表名 where  id<10

5:只复制表的结构

select * into t1 from titles where 1=2

6:查询结果来源于多个表

select id,title,username into t3 from article t inner join s_user p on t.userid=p.id

select * into 与 insert into的区别

select * into 目标表名 from 源表名
insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名

第一句(select into from)要求目标表不存在,因为在插入时会自动创建。
第二句(insert into select from)要求目标表存在,由于目标表已经存在,所以我们除了插入源表的字段外,还可以插入常量

修改语句

update 正稳 set 正稳.ins_type ='医院不对' ,正稳.old_hospital_name = jgj.医院名称
from (
  select  t.id as t_id,v.territory_name,ins.institution_id, ins.institution_name,t.* from  [bk_crm].[dbo].正稳 t
  left join v_territory v on v.usernames = t.代表姓名 and v.cycle_id='201904' and v.territory_level='REP'
  left join e_institution ins on ins.institution_name=t.医院名称 and ins.status='ACTIVE'
  where ins.institution_name is null
)jgj
where 正稳.id=jgj.t_id

SQL With As

WITH AS短语,也叫做子查询部分(subquery factoring),可以定义一个SQL片断,该SQL片断会被整个SQL语句用到。可以使SQL语句的可读性更高,也可以在UNION ALL的不同部分,作为提供数据的部分。

对于UNION ALL,使用WITH AS定义了一个UNION ALL语句,当该片断被调用2次以上,优化器会自动将该WITH AS短语所获取的数据放入一个Temp表中。而提示meterialize则是强制将WITH AS短语的数据放入一个全局临时表中。很多查询通过该方式都可以提高速度。

简单使用方法 后面补充全部的

;
with
u as
(
    select * from s_user
)

select * from u

行转列 & 列转行

原文地址
PIVOT函数,行转列

select *
from ShoppingCart as C 
PIVOT(count(TotalPrice) FOR [Week] IN([1],[2],[3],[4],[5],[6],[7])) AS T

UNPIVOT函数,列转行

with PIVOT_Table as
(
select *
from ShoppingCart as C
PIVOT(count(TotalPrice) FOR [Week] IN([1],[2],[3],[4],[5],[6],[7])) AS T
)

select * from PIVOT_Table UNPIVOT([RowCount] for [Week] in ([1],[2],[3],[4],[5],[6],[7])) as T

除运算怎样取小数形式

SELECT 10/4

结果为2.
但是我们想要的结果是2.50这样的形式。

SELECT 10*1.0/4

结果为2.500000
所以,如果我们要保留2位小数的话,用CAST(…… AS DECIMAL(18,2))就行了。
语句:

select cast(10*1.0/4 as decimal(18,2))

库统计

查询所有表的数据量

SELECT A.NAME ,B.ROWS  FROM sysobjects  A JOIN sysindexes B ON A.id = B.id WHERE A.xtype = 'U' AND B.indid IN(0,1) ORDER BY B.ROWS DESC

#使用 CROSS APPLY 与 OUTER APPLY 连接查询
https://www.cnblogs.com/abeam/p/7137993.html

保存一位小数,不四舍五入

select  cast(round(0.96666,1,1)  as   numeric(18,1))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值