我試圖根據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