我试图根据200多个不同的值创建数据透视表。一位朋友已经准备好了一个我在T-SQL中需要的工作示例,但是ROW_NUMBER函数在MySQL中不可用,我无法将其转换为我所需要的。MySQL中的动态数据透视表
UniqueTally值是Word在此之前出现了多少个不同值的计数。下面的例子表明,“A”再次出现在第3行的时候,这不增加UniqueTally,因为它也是第1行中
我的数据是这样的:
表“字”
| WordID | MemberID | Word | UniqueTally
| 1 | 1 | a | 1
| 2 | 1 | b | 2
| 3 | 1 | a | 2
| 4 | 2 | c | 1
| 5 | 2 | d | 2
| 6 | 2 | e | 3
我有200多个会员,我正在尝试创建一个表格,显示所有成员的唯一计数如何增加。即按会员调整UniqueTally值。字索引是该成员
| WordIndex | UniqueTallyMember1 | UniqueTallyMember2 | etc
| 1 | 1 | 1
| 2 | 2 | 2
| 3 | 2 | 3
有朋友好心生成我需要在T-SQL代码中的行条目号:
/* Return the data */
SELECT
[WordSpoken]
,[182] AS [Mem182_UniqueTally]
,[200] AS [Mem200_UniqueTally]
FROM (
SELECT [WordSpoken], [MemberID], [UniqueTally]
FROM (
SELECT
ROW_NUMBER() OVER(PARTITION BY [MemberID] ORDER BY
[WordID]) AS [WordSpoken]
,[MemberID]
,[UniqueTally]
FROM [dbo].[ut_test]
) AS [test]
) AS [tbl]
PIVOT (MAX(UniqueTally) FOR MemberID IN ([182],[200])) AS [pvt]
GO
这仅使用2 MEMBERID值,但它在尽可能的作品对齐唯一值。 我在MySQL中需要类似的东西,它也动态地获取MemberID。这可能吗?
我试过谷歌搜索和搜索其他类似的帖子,但我无法将这些直接转化为我的问题。
感谢詹姆斯,虽然我不确定如何把它放入查询其余部分的上下文中的嵌套选择 – danjp
向答案添加了一点,可以你回到我身边? –
谢谢,虽然每个成员都需要一个独特的专栏。这段代码(没有Pivot)生成cols但不是正确的值。我会继续'SET @VMemberID:= 0,@VCounter:= 0; SELECT 182 AS M182_UniqueTally ,200 AS M200_UniqueTally FROM(SELECT MEMBERID,UniqueTally FROM( \t \t SELECT @VCounter:= IF(@VMemberID = MEMBERID,0,@VCounter + 1)UniqueTally,@VMemberID! = MEMBERID MEMBERID \t \t FROM WordShort )作为试验 )AS TBL PIVOT( \t MAX(UniqueTally)FOR MEMBERID IN(182200) )AS pvt' – danjp