我试图弄清楚相互之间多个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)
) mRemember...this代码是其中的一部分。
谢谢!!
发布于 2013-10-08 05:03:51
中的第二个看起来有点无意义,因为它只添加了一个由文字填充的列,但除此之外。
在以前的版本中,它可能做得更多,重构被认为是太费力了,或者可能患有开发人员健忘症。“我想我已经完成了”,管理器中断,停止修复另一小段代码,然后忘记你还没有完成这一步。
至于技术,这是一个很好的解决方案的方法。我称它为inside out,但可能有一个科学名称。
在对xml进行交叉应用并使其正常工作之后,通过将结果包装为内部查询,可以更容易地使用结果并对额外行为进行螺栓连接。
它比临时桌子的噪音要小,可能是由CTE前开发的,或者是由不太熟悉它们的开发人员开发的。
试着在oner中编写它,你可能会开始明白一两个要点。:)
https://stackoverflow.com/questions/19234064
复制相似问题