[英]Transposing Strings
我正在探索 mlb 棒球 statcast 數據,這是在球場級別。 我想總結一下板塊外觀層面的pitch。 相關欄目:
game_pk | pitcher_id | batter_id | inning | pitch_number | pitch_type | plt_apprnc_pk (unique)
----------------------------------------------------------------------------------------------
492321 | 542881 | 518466 | 2 | 1 | FF | 4923215428815184662
492321 | 543475 | 571448 | 1 | 2 | SL | 4923215434755714481
492321 | 543475 | 571448 | 1 | 1 | FF | 4923215434755714481
492321 | 543475 | 571448 | 1 | 3 | FF | 4923215434755714481
我正在處理一個查詢,僅顯示每個板外觀的一次迭代 (plt_apprnc_pk),然后是 pitch_number 列(第 1 個音高、第 2 個音高、第 3 個音高等...),顯示相應音高編號的每個音高類型。 本質上我想通過 pitch_number 轉置 pitch_type。
plt_apprnc_pk (unique)| first_pitch | second_pitch | third_pitch
----------------------------------------------------------------
4923215434755714481 | SL | FF | FF
我嘗試使用 Case 語句來執行此操作(即 CASE WHEN pitch_number = 1 THEN pitch_type END)。 我一直為每個 plt_apprnc_pk 獲取多行。
plt_apprnc_pk (unique)| first_pitch | second_pitch | third_pitch
------------------------------------------------------------------
4923215434755714481 | SL | NULL | NULL
4923215434755714481 | NULL | FF | NULL
4923215434755714481 | NULL | NULL | FF
基於 pitch_number 轉置這些字符串同時只保留唯一鍵的一次迭代的最佳方法是什么?
我嘗試使用 Case 語句來執行此操作(即 CASE WHEN pitch_number = 1 THEN pitch_type END)。 我一直為每個 plt_apprnc_pk 獲取多行。
這里的模式稱為條件聚合:
SELECT plt_apprnc_pk
,MAX(CASE WHEN pitch_number = 1 THEN pitch_type END) AS first_pitch
,MAX(CASE WHEN pitch_number = 2 THEN pitch_type END) AS second_pitch
,MAX(CASE WHEN pitch_number = 3 THEN pitch_type END) AS thrid_pitch
-- ...
--,MAX(CASE WHEN pitch_number = n THEN pitch_type END) AS nth_pitch
FROM tab
GROUP BY plt_apprnc_pk;
注意:必須事先知道最大“pitch_number”。
您可以在查詢中使用 Like this 我認為這很有用:
ISNULL(max(case when pitch_number = 1 THEN pitch_type end),0) as Default_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.