SQL Server With语句 sql server语句大全讲解
WITH AS的含义
为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。
特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定义的表名被调用两次以上,则优化器会自动将WITH AS短语所获取的数据放入一个TEMP表里,如果只是被调用一次,则不会。而提示materialize则是强制将WITH AS短语里的数据放入一个全局临时表里。很多查询通过这种方法都可以提高速度。
示例:
SET DATEFIRST 1
declare @date_start varchar(20)
SET @date_start='2021-05-31'
declare @date_end varchar(20)
SET @date_end='2021-07-20'; -- 必须有分号
with
t_tree as (select CONVERT(varchar(20), min(data_date), 23)+'_'+ CONVERT(varchar(20),DATEADD(DAY,6,min(data_date)),23) as 日期 from table_name)
select 日期 from t_tree