我有一个名为PurchaseOrderDetail的表。SQL Server 2005 - Select语句中的表函数
TABLE PurchaseOrderDetail
PurchaseOrderDetail int,
Comments nvarchar(500)
在每个项目的注释字段我有一个“;”是存储合同名称,合同号,许可证名称,许可证版本分隔的列表。
即
PurchaseOrderDetail Comments
1 'Microsoft Office Standard 2007;12%;;'
2 'Microsoft Visio 2007;9%;;'
我也有一个功能叫做拆分,需要一个分隔符和一个字符串,并返回一个表,
所以调用此 SELECT * FROM斯普利特(“;”,“微软Office标准版2007; 12%;;“)
返回此
pn s [ column names]
1 Microsoft Office Standard 2007
2 12%
我要打破这种信息对每个PurchaseOrderDetail,并显示他们在一份报告中
因此,像这样
select PurchaseOrderDetailID, cn.s as ContractName, cno.s as ContractNo
from dbo.PurchaseOrderDetail as pod
join dbo.Split(';', pod.Comments) as cn on cn.pn = 1
join dbo.Split(';', pod.Comments) as cno on cno.pn = 2
虽然不运行,但我希望它表明意图。
我想我的结果是:
PurchaseOrderDetailID ContractName ContractNo
1 Microsoft Office Standard 2007 12%
是否有可能,还是我处理这个错误的方式
感谢马特,如果你找到自己的方式进入墨尔本的某个时候,我们将不得不给你一个啤酒 – Jiminy 2009-05-22 06:14:55