mysql - SQL多次显示同一列

标签 mysql pivot

表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/

相关文章:

mysql - SQL循环依赖

mysql - 如何在 MySQL 中返回数据透视表输出?

c# - 从 DataTable 创建数据透视表

php - mysql代码没问题。 Php 无法回显它。为什么?

python - 将多级索引的第一级旋转为多级列的第一级

mysql - mysql查询中的正则表达式

mysql - 如何对这个相关子查询建模?

c# - MySQL ADO.Net 嵌套数据读取器

mysql - TIMESTAMPDIFF MIN MAX 优化

SQL Pivot函数获取top notes字段