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))