我正在尝试进行一个查询,列出他们在加入 NFL 之前效力的大学下的球员。我想删除空值并仅列出每个学校下的球员。你们知道我该怎么做吗?我尝试编写一个“is null”声明并将其放入 cte 中,但没有成功。任何意见都会受到赞赏。这是我的代码:
Select * from(
Select
collegeName, displayName,ANY_VALUE(displayName) as Player
from NFL.Players
group by collegeName,displayName)
Pivot (Any_Value(Player) for collegeName in('Kansas State','Abilene Christian','Texas Tech'))
您确实可以将
PIVOT
与 STRING_AGG
聚合函数一起使用。
WITH
players AS (
SELECT "Kansas State" AS collegeName, "Player 1" AS displayName
UNION ALL
SELECT "Abilene Christian" AS collegeName, "Player 2" AS displayName
UNION ALL
SELECT "Kansas State" AS collegeName, "Player 3" AS displayName
UNION ALL
SELECT "Texas Tech" AS collegeName, "Player 4" AS displayName
UNION ALL
SELECT "Kansas State" AS collegeName, "Player 5" AS displayName
)
SELECT
*
FROM players
PIVOT(STRING_AGG(displayName) FOR collegeName IN ('Kansas State', 'Abilene Christian', 'Texas Tech'))
这将导致:
+----------------------------+-------------------+------------+
| Kansas State | Abilene Christian | Texas Tech |
+----------------------------+-------------------+------------+
| Player 1,Player 3,Player 5 | Player 2 | Player 4 |
+----------------------------+-------------------+------------+