在选择内的选择内的选择内选择

时间:2013-10-07 20:24:44

标签: multi-select

我正在努力做头脑和彼此之间多个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

请记住......这段代码是部分的。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

在以前的化身中它可能做得更多,并且重新分解被认为是太多的努力,或者可能遭受开发者健忘症。 “我以为我做到了” 经理中断,修复另一部分代码并忘记你还没完成这个。

至于技术,它是提出解决方案的好方法。我把它称为内部,但它可能有一个科学名称。

在十字架中付出的所有努力都应用于xml并使其正常工作之后,通过将其作为内部查询包装起来,更容易使用结果和更多行为。

它不像临时桌子那样嘈杂,可能是开发前CTE或开发人员不熟悉它们。

尝试在oner中写下它,你可能会开始看到一两点。 :)