注意:BigQuery不允許子選擇在select子句中。
它DOES支持使用標準SQL - 見Enabling Standard SQL
WITH POINT_STATUS AS (
SELECT 9 AS rank_point, 'excellent' AS status UNION ALL
SELECT 5 AS rank_point, 'good' AS status UNION ALL
SELECT 3 AS rank_point, 'bad' AS status UNION ALL
SELECT 0 AS rank_point, 'fail' AS status
),
STUDENT_POINT AS (
SELECT 'student A' AS student, 8 AS point UNION ALL
SELECT 'student B' AS student, 9 AS point UNION ALL
SELECT 'student C' AS student, 5 AS point UNION ALL
SELECT 'student D' AS student, 4 AS point
)
SELECT
student, point,
(SELECT status
FROM POINT_STATUS
WHERE rank_point <= point
ORDER BY rank_point DESC
LIMIT 1
) AS status
FROM STUDENT_POINT
同時,如果您綁定到傳統的SQL,請參見下面
SELECT student, point, status FROM (
SELECT
student, point, status,
ROW_NUMBER() OVER(PARTITION BY student ORDER BY rank_point DESC) AS pos
FROM STUDENT_POINT
CROSS JOIN POINT_STATUS
WHERE point - rank_point >= 0
)
WHERE pos = 1
重要的SO,您可以通過在投票表決下的已發佈答案左側的勾號標記接受的答案。請參閱http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235瞭解其重要性。還有更多......當某人回答你的問題時,你可以查看該怎麼做 - http://stackoverflow.com/help/someone-answers。 –