DECLARE @x xml; SET @x = ( SELECT * FROM OPENROWSET(BULK 'c:\Nadya\VFP\ei_time.xml', SINGLE_BLOB) AS X ); SELECT T.n.value('./@siteName[1]', 'varchar(50)') AS [siteName], T.n.value('./@currPeriodEnd[1]', 'datetime') AS [currPeriodEnd], TS.n.value('@levelCode[1]', 'varchar(15)') AS [levelCode], TS.n.value('@team[1]', 'varchar(2)') AS [team], B.n.value('@bookingDate[1]', 'datetime') AS [bookingDate], B.n.value('@project[1]','varchar(10)') as [Project], B.n.value('@jobCard[1]','varchar(20)') as [JobCard] FROM @x.nodes('/Time') AS T(n) CROSS APPLY T.n.nodes('./Timesheet') AS TS(n) CROSS APPLY TS.n.nodes('./Booking') AS B(n); GOSee http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/ace6e75f-ad81-4ddc-bd97-ca80a915fd90