google big queryでクロス結合

google big queryは標準ではクロス結合できません。これだと、色々困るので以下のようにしてクロス結合を実現します。

SELECT user_id,type FROM
(
  SELECT 1 as k,user_id FROM
   (SELECT 1 as user_id),
   (SELECT 2 as user_id),
   (SELECT 3 as user_id),
   (SELECT 4 as user_id),
   (SELECT 5 as user_id),
) a JOIN (
  SELECT 1 as k,type FROM
   (SELECT 'A'  type),
   (SELECT 'B'  type),
   (SELECT 'AB' type),
   (SELECT 'O'  type),
) b ON a.k=b.k

ジョインに結合キー指定が必要なら、作ってしまえばいいと言うことです。

Row	user_id	type	 
1	1	A	 
2	1	B	 
3	1	AB	 
4	1	O	 
5	2	A	 
6	2	B	 
7	2	AB	 
8	2	O	 
9	3	A	 
10	3	B	 
11	3	AB	 
12	3	O	 
13	4	A	 
14	4	B	 
15	4	AB	 
16	4	O	 
17	5	A	 
18	5	B	 
19	5	AB	 
20	5	O