mgm6608美高梅app下载-mgm集团美高梅登录

mgm6608美高梅app下载以独家报道、社区、博客和专题策划等方式引领产业潮流,mgm集团美高梅登录为足球爱好者以及体育爱好者提供足球上网,让你无后顾之忧!,拥有多位香港乐坛红星。

三、递归的方式,销售订单--&gt

日期:2020-03-09编辑作者:mgm集团美高梅登录

一、with as 公用表表达式

最近工作中遇到了一个问题,需要根据保存的流程数据,构建流程图。数据库中保存的流程数据是树形结构的,表结构及数据如下图:

类似VIEW,但是不并没有创建对象,WITH AS 公用表表达式不创建对象,只能被后随的SELECT语句,其作用:

mgm集团美高梅登录 1

  1. 实现递归查询(树形结构)

  2. 可以在一个语句中多次引用公用表表达式,使其更加简洁

仔细观察表结构,会发现其树形结构的特点:

二、非递归的公共表达式

  • FFIRSTNODE:标记是否为根节点
  • FSTABLENAME:标记来源单据名称
  • FSID:标记来源单据分录ID
  • FTTABLENAME :标记目标单据名称
  • FTID:标记目标单据分录ID

可以是定义列或自动列和select into 效果差不多

图中的流程为:
销售合同-->销售订单-->发货通知单-->销售出库单

--指定列with withTmp1 (code,cName)as( select id,Name from ClassUnis)select * from withTmp1--自动列with withTmp2 as( select * from ClassUnis where Author = 'system')select * from withTmp2

首先想到的办法就是把流程数据取回来,然后代码构造流程图。
第一个思路:根据根节点循环往下找,吭呲半天,发现没那么简单。
因为任何一个源头单据都可以多次下推目标单据:
第二个思路:先找到终极节点,在从终极节点往上找只至根节点为0。
这个思路实现起来也没有那么复杂,逻辑理清,循环遍历,最终也能实现结果。(但在大数据量情况下,易导致性能瓶颈。)

三、递归的方式

这一次我们换一个思路,让SQL来替我们做这一复杂的递归查询。

通过UNION ALL 连接部分。通过连接自身whit as 创建的表达式,它的连接条件就是递归的条件。可以从根节点往下查找,从子节点往父节点查找。只需要颠倒一下连接条件。例如代码中条件改为t.ID = c.ParentId即可

一、SqlServer 递归查询

with tree as( --0 as Level 定义树的层级,从0开始 select *,0 as Level from ClassUnis where ParentId is null union all --t.Level + 1每递归一次层级递增 select c.*,t.Level + 1 from ClassUnis c,tree t where c.ParentId = t.ID --from ClassUnis c inner join tree t on c.ParentId = t.ID)select * from tree where Author not like'%/%'

1、基本概念

公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。公用表表达式可以包括对自身的引用,这种表达式称为递归公用表表达式。

  • 创建递归查询。有关详细信息,请参阅使用公用表表达式的递归查询.aspx)。
  • 在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据中。
  • 启用按从标量嵌套 select 语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。
  • mgm集团美高梅登录 ,在同一语句中多次引用生成的表。

MSDN上对CTE的介绍
T-SQL查询进阶--详解公用表表达式(CTE)

mgm6608美高梅app下载 ,CTE 的基本语法结构如下:

WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
--只有在查询定义中为所有结果列都提供了不同的名称时,列名称列表才是可选的。
--运行 CTE 的语句为:
SELECT <column_list> FROM expression_name;

即三个部分:

  1. 公用表表达式的名字(在WITH关键字之后)
  2. 查询的列名(可选)
  3. 紧跟AS之后的SELECT语句(如果AS之后有多个对公用表的查询,则只有第一个查询有效

本文由mgm6608美高梅app下载发布于mgm集团美高梅登录,转载请注明出处:三、递归的方式,销售订单--&gt

关键词:

建立表空间,我现在想把S

2、使用列名称别名 2.在“个人基本信息”最下方增加“监察任务类别”,内容来自培训系统,通过培训结果关联培训...

详细>>

【mgm集团美高梅登录】Azure SQL数据仓库

2 具体内容 2.1 使用范围 SQL Server ;Azure SQL数据库;Azure SQL数据仓库;并行数据仓库 2.2 语法 是SQLServer数据库引擎评估...

详细>>

②界定标识符,datetime 秒的小数部分精度的舍入

废话少说,直接上SQL代码,下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题,个...

详细>>

最近在项目中很多地方字段都是存一个,定义和

SQL Server 中 JSON_MODIFY 的使用 JSON是一个非常流行的,用于数据交换的文本数据(textualdata)格式,主要用于Web和移动应...

详细>>