相关疑难解决方法(0)

SQL Server CTE - 查找每个childID的顶级parentID?

我有一个包含层次结构数据的表 - 类似于:

childID  |  parentID
____________________
  1      |     5
  5      |     9
  9      |     20
  2      |     4
  3      |     7
  7      |     8
  8      |     8
 20      |     20
  4      |     4
  8      |     8
Run Code Online (Sandbox Code Playgroud)

期望的输出:

在此输入图像描述

我创建了一个递归CTE,它找到了我的顶部fatherID.

就像是:

;WITH cte AS (
                 SELECT a.childID
                       ,a.parentID
                       ,1 AS lvl
                 FROM   [Agent_Agents] a
                 WHERE   a.childID = 214 //<==== value to begin with !! - thats part the problem
                 UNION ALL
                 SELECT tmp.childID
                       ,tmp.parentID
                       ,cte.lvl+1
                 FROM   [Agent_Agents] tmp
                         INNER …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server common-table-expression sql-server-2008

16
推荐指数
2
解决办法
2万
查看次数

避免在查询中重复SQL片段?

我有这个查询(伪代码)

SELECT 
    a = 1,
    b = 2,
    c = CASE 
            WHEN ISNULL(
                         (SELECT MONTH(GETDATE()) <---long query
                         ), 0) = 0 THEN 'found'
            ELSE 
              SELECT MONTH(GETDATE())     <--- repeated long query
        END
Run Code Online (Sandbox Code Playgroud)

问题是SELECT MONTH(GETDATE())实际上这是很长的查询.

这个"长表达式"是否有任何解决方法不会在查询中出现两次?

PS

我有一个计算SELECT MONTH(GETDATE())外部变量的解决方案......但我想弄清楚是否有内联解决方案.

sql-server sql-server-2008

1
推荐指数
1
解决办法
1221
查看次数