我目前正在尝试将某些行PIVOT转换为列。问题是我并不总是知道有多少行可用。让我们看一个例子:
Values_Table Columns_Table
------------ -----------
ID ID
ColumnsTableID GroupID
Value ColumnName
结果”
Columns_Table
---------------
ID | GroupID | ColumnName
---------------------------------
0 1 Cats
1 1 Dogs
2 1 Birds
3 2 Pontiac
4 2 Ford
5 3 Trex
6 3 Raptor
7 3 Triceratops
8 3 Kentrosaurus
静态枢纽的SQL FIDDLE范例。我正在尝试实现动态枢轴-http://sqlfiddle.com/#!3/
2be82/1
因此,这是我的难题:在这种情况下,我希望能够基于GroupID透视未知数量的列。
我希望能够将GroupID 3中的所有行都列为PIVOT。我需要在不知道groupID 3中有多少行的情况下进行此操作。
数据库的设计是一成不变的,所以我对此无能为力。我所能做的就是用我拥有的东西工作:(
那么,说-在这个例子中,有没有人对如何完成将PIVOT将未知数量的行分成列的工作有任何建议?
如果您不希望提前知道这些值,那么您将需要使用动态SQL。这将创建一个将要执行的SQL字符串,这是必需的,因为在运行查询时必须知道列列表。
该代码将类似于:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),
@groupid as int
set @groupid = 3
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(GroupName)
from Columns_Table
where groupid = @groupid
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ' + @cols + '
from
(
SELECT B.GroupName, A.Value
, row_number() over(partition by a.ColumnsTableID
order by a.Value) seq
FROM Values_Table AS A
INNER JOIN Columns_Table AS B
ON A.ColumnsTableID = B.ID
where b.groupid = '+cast(@groupid as varchar(10))+'
) p
pivot
(
min(P.Value)
for P.GroupName in (' + @cols + ')
) p '
execute sp_executesql @query;
请参阅带有演示的SQL Fiddle。对于3的groupid,结果将是:
| KENTROSAURUS | RAPTOR | TREX | TRICERATOPS |
| whatisthiseven | Itsaraptor | Jurassic | landbeforetime |
| (null) | zomg | Park | (null) |
问题内容: 我有一个方法,它使用可变长度的字符串(String …)作为参数。我和我在一起。如何将其作为参数传递给方法? 问题答案: 等于a 因此,只需将a 转换为a ,就可以了。
我是数据科学的初学者,我正在尝试使用Pandas来旋转此数据框架: 所以它变成这样:(标签应该变成列,文件路径变成行。) “标签”列是一组或一类文件路径。我想把它转换成这样一种方式,它适合这个函数:tf。Keras.preprocessing.image.flow_from_dataframe 提前感谢所有帮助我的人。
假设我保证(通过未指定的方式)我有一个类型的数组,其中包含有效且不相交的可变指针,所有指针都具有生存期。如何将其转换为可变引用数组
问题内容: 考虑下面的示例,其中有一个包含人员记录的 Person 表和一个包含链接到人员的可选属性的 PersonAttribute 表: Table: Person Table PersonAttribute 我将如何编写一个查询,使所有具有属性的人都像列一样返回?我需要的结果集是: 因此,从本质上讲,我需要编写一个查询,该查询将获取所有带有所有唯一属性键的人记录,这些键被转换为具有每个人记录
问题内容: 我的表包含以下列: 我想显示如下: 如您所见,我想将列与自定义列名成对显示。这对是列A和B,列C和D以及列C和D。 问题答案:
假设您有一个类似数组的Javascript ES6 Iterable,您事先知道它的长度是有限的,将其转换为Javascript数组的最佳方法是什么? 这样做的原因是许多js库(如underscore和lodash)仅支持数组,因此如果您希望在可迭代上使用它们的任何函数,则必须首先将其转换为Array。 在python中,您可以只使用list()函数。ES6中是否有同等标准?