SQL - 从具有唯一记录的 table 中透视列
SQL -Pivoting a column from a table which have Unique records
我正在尝试将 table 转换为在所有列上都有重复记录但在最后一列上有一个名为 ([log_ID]) 的唯一 ID 的行。我不会 log_ID 字段旋转并将动态名称命名为 log_ID_1 ,log_ID_2 ...等等 仅供参考 - log_ID 不是静态的,它们在每次执行时都会改变可能更少或更多。
我的 table 以此检索记录。
enter image description here
我不会这样显示的
enter image description here
您没有说明您使用的是什么数据库,所以我假设它是 SQL 服务器的最新版本..
向您的数据集添加一列,为每个 log_id
生成一个数字...
我用
重新创建了您的样本数据
DECLARE @t TABLE(Emp_ID int, [Name] varchar(20), log_ID int)
INSERT INTO @t VALUES
(6354, 'John Doe', 752),
(6354, 'John Doe', 653),
(6354, 'John Doe', 635),
(6354, 'John Doe', 124),
(6354, 'John Doe', 874),
(6354, 'John Doe', 254)
SELECT
[Emp_ID], [Name], [log_ID],
CONCAT('log_ID_', ROW_NUMBER() OVER(PARTITION BY Emp_ID ORDER BY Emp_ID) ) as col
FROM @t
这给出了以下结果
注意 ROW_NUMBER()
函数需要一个 ORDER BY
。我使用 Emp_ID
,尽管它们都是一样的,因此结果 应该 按照它们在 table 中的顺序返回。您可以更改 order by 子句以按您喜欢的任何顺序对 log_ID 进行排序。
现在在您的报表中,添加矩阵控件,添加按 emp_id
和 name
的行组,并添加按 col
分组的列组
如果 table 有多个 emp_id,那么它们将出现在报告的不同行中。
仅此而已。
我正在尝试将 table 转换为在所有列上都有重复记录但在最后一列上有一个名为 ([log_ID]) 的唯一 ID 的行。我不会 log_ID 字段旋转并将动态名称命名为 log_ID_1 ,log_ID_2 ...等等 仅供参考 - log_ID 不是静态的,它们在每次执行时都会改变可能更少或更多。
我的 table 以此检索记录。 enter image description here
我不会这样显示的 enter image description here
您没有说明您使用的是什么数据库,所以我假设它是 SQL 服务器的最新版本..
向您的数据集添加一列,为每个 log_id
生成一个数字...
我用
重新创建了您的样本数据DECLARE @t TABLE(Emp_ID int, [Name] varchar(20), log_ID int)
INSERT INTO @t VALUES
(6354, 'John Doe', 752),
(6354, 'John Doe', 653),
(6354, 'John Doe', 635),
(6354, 'John Doe', 124),
(6354, 'John Doe', 874),
(6354, 'John Doe', 254)
SELECT
[Emp_ID], [Name], [log_ID],
CONCAT('log_ID_', ROW_NUMBER() OVER(PARTITION BY Emp_ID ORDER BY Emp_ID) ) as col
FROM @t
这给出了以下结果
注意 ROW_NUMBER()
函数需要一个 ORDER BY
。我使用 Emp_ID
,尽管它们都是一样的,因此结果 应该 按照它们在 table 中的顺序返回。您可以更改 order by 子句以按您喜欢的任何顺序对 log_ID 进行排序。
现在在您的报表中,添加矩阵控件,添加按 emp_id
和 name
的行组,并添加按 col
如果 table 有多个 emp_id,那么它们将出现在报告的不同行中。
仅此而已。