0

我正在尝试对多个 select 语句背后的推理进行正面和反面。换句话说,重点是什么?注意:我对 T-SQL 非常熟悉……我已经从 SQL Server 的维护方面转移到它的开发方面。以下是让我感到困惑的代码(部分):

SELECT DISTINCT id
,NAME
,TypeCode
,ProductId
,ProductName
,LocationCode
,County
,STATE
,RecommendationType
,PackageName
FROM (
SELECT c.Id
    ,C.NAME
    ,p.Typecode
    ,p.ProductId
    ,p.Productname
    ,p.LocationCode
    ,p.County
    ,p.STATE
    ,'Appened' AS RecommendationType
    ,PackageName
FROM (
    SELECT op.*
        ,t.i.value('@ProductId', 'varchar(50)') AS productId
        ,t.i.value('@Name', 'varchar(50)') AS Product
    FROM (
        SELECT pg.CustomerId
            ,pg.NAME AS PackageName
            ,pg.runtimedefinition.query('/PackageDefinition/Products')                                    AS CList
        FROM product.package pg WITH (NOLOCK)
        ) op
    CROSS APPLY clist.nodes('Products/Task[@xsi:type="ProductTask"]') t(i)
    ) m

请记住...此代码是部分代码。

谢谢!!

4

1 回答 1

0

好吧,第二个似乎有点毫无意义,因为它只添加了一个由文字填充的列,但除此之外。

在以前的版本中,它可能做得更多,重构被认为付出了太多努力,或者可能患有开发者健忘症。“我以为我已经做到了” 经理中断,去修复另一段代码,然后忘记你还没有完成这个。

至于技术,这是提出解决方案的好方法。我从里到外称呼它,不过它可能有一个学名。

在交叉应用 xml 并使其正常工作之后,通过将其包装为内部查询,更容易使用结果并加强额外的行为。

它比临时表噪音小,并且可能开发了 pre CTE 或由对它们不太满意的开发人员。

试着把它写成一个,你可能会开始看到一两点。:)

于 2013-10-07T21:03:51.180 回答