表1有,NameId,年龄,性别...
表2有Version No, TimeStamp ...
现在我想从表1中选择NameId,从表2中多次选择版本号和时间戳,我需要查询表2中的所有版本和时间记录, 谁能给我一些关于如何查询的想法?
NameId | Version/Time | Version/Time | Version/Time …
Angela | 1 / 01.01.2010 | 2 / 01.02.2010 | 3 / 01.03.2010
Betty | 1 / 01.01.2010 | 2 / 01.02.2010 | 3 / 01.03.2010
Cathy | 1 / 01.01.2010 | 2 / 01.02.2010 | 3 / 01.03.2010
... | .... | |
最佳答案
如果像您所说的那样,任何固定值集都不起作用,那么您将需要动态 sql 来执行数据透视。
沿着这些线的东西:
CREATE PROCEDURE [dbo].[usp_pivot_]
AS
DECLARE @columns VARCHAR(1000)
SELECT @columns = COALESCE(@columns + ',[' + cast(versionTime as varchar) + ']',
'[' + cast(versionTime as varchar)+ ']')
FROM table1 inner join table2 on table1.NameId = table2.NameId
GROUP BY versionTime
DECLARE @query VARCHAR(8000)
SET @query = '
SELECT *
FROM table1 inner join table2 on table1.NameId = table2.NameId
PIVOT
(
first(versionTime)
FOR [versionTime]
IN (' + @columns + ')
)
AS p'
EXECUTE(@query)
关于mysql - SQL多次显示同一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770058/