我发现了一些与我需要的东西类似的东西,但我无法围绕如何将它带到需要的地方。SQL Dynamic Pivot without aggregate
这有助于确定的:simple(?) PIVOT without an aggregate
这里是我当前的查询:
SELECT [1] AS Lien1
,[2] AS Lien2
,[3] AS Lien3
,[4] AS Lien4
,[5] AS Lien5
,[6] AS Lien6
FROM (SELECT lt.Name AS [LienName]
-- ,LienID
,ROW_NUMBER() OVER (ORDER BY LienID) AS RN
FROM dbo.Lien AS L
INNER JOIN dbo.LienType AS LT ON LT.LienTypeID = L.LienTypeID
WHERE FileID = 528267
) AS PivotSource PIVOT
(MAX(LienName) FOR RN IN ([1], [2], [3], [4], [5], [6])) piv
它返回的结果如下:
Lien1 Lien2 Lien3 Lien4 Lien5 Lien6
Deed of Trust Assignment Appointment of Substitute Trustee Assignment Assignment Civil Foreclosure Case
我需要commente d行( - LienID)不会被注释掉,并在相应的LienName之后返回LienID,例如(为了格式化目的,我删除了最后四列)。
Lien1 LienID Lien2 LienID
Deed of Trust 123 Assignment 234
也许Pivot是不能做到这一点的最好办法,但它是我迄今发现的最好的。我有5个表返回多行,我需要返回一行上的所有值。我一直在尝试理解这里的动态SQL数据透视问题,但是我一直无法执行一个来执行我需要执行的方式。
我接受任何和所有的建议,这将有助于 - 在此先感谢您的时间!
编辑:14年11月4日@ 10:47AM
我想回来,并张贴在正在进行的工作,因为我已经把这个答案到了一些动态查询的内容。
DECLARE @FileID INT = 528267
DECLARE @Cols NVARCHAR(MAX)
DECLARE @query NVARCHAR(MAX)
SELECT @cols = STUFF((SELECT ',' + QUOTENAME('LienNumber' + CONVERT(VARCHAR, ROW_NUMBER() OVER (ORDER BY SortOrder)))
FROM dbo.Lien AS L
INNER JOIN dbo.LienType AS LT ON LT.LienTypeID = L.LienTypeID
INNER JOIN dbo.FileActions AS FA ON fa.FileID = l.FileID
AND fa.ActionDefID = 1184
AND fa.SentDate IS NOT NULL
AND fa.ReceivedDate IS NULL
AND fa.FileID = @FileID
FOR XML PATH('')
,TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
SET @Query = 'DECLARE @FileID INT = 528267 SELECT ' + @cols + '
FROM (select lt.name as Name, ''LienNumber'' + CONVERT(VARCHAR, ROW_NUMBER() OVER (ORDER BY SortOrder)) as RN
FROM
dbo.Lien AS L
INNER JOIN dbo.LienType AS LT ON LT.LienTypeID = L.LienTypeID
INNER JOIN dbo.FileActions AS FA ON fa.FileID = l.FileID
AND fa.ActionDefID = 1184
AND fa.SentDate IS NOT NULL
AND fa.ReceivedDate IS NULL
AND fa.FileID = @FileID
) x
pivot ( MAX(name) FOR RN IN (' + @Cols + ')) p'
EXEC (@query)
的帮助下:Convert Rows to columns using 'Pivot' in SQL Server
当你说_return的LienID相应LienName._之后是什么意思?结果应该是什么样子? – jpw 2014-11-03 21:56:06
刚刚发布 - 谢谢! – 2014-11-03 23:34:02
呵呵,你能在sqlfiddle上设置一组样本数据吗?我有这个想法应该可以工作,但是在编辑我的答案之前,我希望有一个实时引擎来测试。 – 2014-11-03 23:37:39