blob: 338ac6709c5200c95a0a291c472670e8ef13c551 [file] [log] [blame]
>>
>>create table t023t1 (
+> a int not null ,
+> b int not null ,
+> c int not null ,
+> d int not null ,
+> primary key(a) );
--- SQL operation complete.
>>
>>create table t023t2 (
+> a int not null ,
+> b int not null ,
+> c int not null ,
+> d int not null ,
+> primary key(a) );
--- SQL operation complete.
>>
>>create table t023t3 (
+> a int not null ,
+> b int not null ,
+> c int not null ,
+> d int not null ,
+> primary key(a) );
--- SQL operation complete.
>>
>>
>>create table t023t4 (
+> sk int not null ,
+> numRows int not null ,
+> a0 int not null ,
+> a1 int not null ,
+> a2 int not null ,
+> a3 int not null ,
+> primary key(sk) );
--- SQL operation complete.
>>
>>create table t023t5 (
+> sk int not null ,
+> numRows int not null ,
+> b0 int not null ,
+> b1 int not null ,
+> b2 int not null ,
+> b3 int not null ,
+> b4 int not null ,
+> b5 int not null ,
+> b6 int not null ,
+> b7 int not null ,
+> primary key(sk) );
--- SQL operation complete.
>>
>>create table t023t6 (
+> sk int not null ,
+> numRows int not null ,
+> c0 int not null ,
+> c1 int not null ,
+> c2 int not null ,
+> c3 int not null ,
+> c4 int not null ,
+> c5 int not null ,
+> c6 int not null ,
+> c7 int not null ,
+> primary key(sk) );
--- SQL operation complete.
>>
>>create table t023t7 (
+> sk int not null ,
+> numRows int not null ,
+> d0 int not null ,
+> d1 int not null ,
+> d2 int not null ,
+> d3 int not null ,
+> d4 int not null ,
+> d5 int not null ,
+> d6 int not null ,
+> d7 int not null ,
+> d8 int not null ,
+> d9 int not null ,
+> d10 int not null ,
+> d11 int not null ,
+> d12 int not null ,
+> d13 int not null ,
+> d14 int not null ,
+> d15 int not null ,
+> primary key(sk) );
--- SQL operation complete.
>>
>>?section dml
>>
>>-- POPULATE TABLES
>>
>>insert into t023t1 values
+> (0, 0, 0, 0),
+> (1, 10, 100, 1000),
+> (2, 20, 200, 2000),
+> (3, 30, 300, 3000),
+> (4, 40, 400, 4000),
+> (5, 50, 500, 5000),
+> (6, 60, 600, 6000),
+> (7, 70, 700, 7000),
+> (8, 80, 800, 8000),
+> (9, 90, 900, 9000);
--- 10 row(s) inserted.
>>
>>insert into t023t2 (
+> select a * 10 + c1, c1, c1 * 10, c1 * 100
+> from t023t1
+> transpose 0,1,2,3,4,5,6,7,8,9 as c1
+> key by k1);
--- 100 row(s) inserted.
>>
>>insert into t023t3 (
+> select a * 10 + c1, c1, c + c1, d + (c1 * 10)
+> from t023t2
+> transpose 0,1,2,3,4,5,6,7,8,9 as c1
+> key by k1);
--- 1000 row(s) inserted.
>>
>>
>>insert into t023t4 values (0, 4, 0, 1, 2, 3),
+> (4, 4, 4, 5, 6, 7),
+> (8, 4, 8, 9, 10, 11),
+> (12, 4, 12, 13, 14, 15),
+> (16, 4, 16, 17, 18, 19),
+> (20, 4, 20, 21, 22, 23),
+> (24, 4, 24, 25, 26, 27),
+> (28, 4, 28, 29, 30, 31),
+> (32, 4, 32, 33, 34, 35);
--- 9 row(s) inserted.
>>
>>insert into t023t5 values
+> (0, 8, 100, 101, 102, 103, 104, 105, 106, 107),
+> (8, 8, 108, 109, 110, 111, 112, 113, 114, 115),
+> (16, 8, 116, 117, 118, 119, 120, 121, 122, 123),
+> (24, 8, 124, 125, 126, 127, 128, 129, 130, 131),
+> (32, 4, 132, 133, 134, 135, -1, -1, -1, -1);
--- 5 row(s) inserted.
>>
>>insert into t023t6 values
+> (0, 8, 200, 201, 202, 203, 204, 205, 206, 207),
+> (8, 8, 208, 209, 210, 211, 212, 213, 214, 215),
+> (16, 8, 216, 217, 218, 219, 220, 221, 222, 223),
+> (24, 8, 224, 225, 226, 227, 228, 229, 230, 231),
+> (32, 4, 232, 233, 234, 235, -1, -1, -1, -1);
--- 5 row(s) inserted.
>>
>>insert into t023t7 values
+> (0, 16, 300, 301, 302, 303, 304, 305, 306, 307,
+> 308, 309, 310, 311, 312, 313, 314, 315),
+> (16, 16, 316, 317, 318, 319, 320, 321, 322, 323,
+> 324, 325, 326, 327, 328, 329, 330, 331),
+> (32, 4, 332, 333, 334, 335, -1, -1, -1, -1,
+> -1,-1,-1,-1,-1,-1,-1,-1);
--- 3 row(s) inserted.
>>
>>-- SOME BASIC QUERIES USING TRANSPOSE.
>>
>> select *
+> from t023t1
+>transpose a,b,c,d as c1
+> key by k1;
A B C D K1 C1
----------- ----------- ----------- ----------- ----------- -----------
0 0 0 0 1 0
0 0 0 0 2 0
0 0 0 0 3 0
0 0 0 0 4 0
1 10 100 1000 1 1
1 10 100 1000 2 10
1 10 100 1000 3 100
1 10 100 1000 4 1000
2 20 200 2000 1 2
2 20 200 2000 2 20
2 20 200 2000 3 200
2 20 200 2000 4 2000
3 30 300 3000 1 3
3 30 300 3000 2 30
3 30 300 3000 3 300
3 30 300 3000 4 3000
4 40 400 4000 1 4
4 40 400 4000 2 40
4 40 400 4000 3 400
4 40 400 4000 4 4000
5 50 500 5000 1 5
5 50 500 5000 2 50
5 50 500 5000 3 500
5 50 500 5000 4 5000
6 60 600 6000 1 6
6 60 600 6000 2 60
6 60 600 6000 3 600
6 60 600 6000 4 6000
7 70 700 7000 1 7
7 70 700 7000 2 70
7 70 700 7000 3 700
7 70 700 7000 4 7000
8 80 800 8000 1 8
8 80 800 8000 2 80
8 80 800 8000 3 800
8 80 800 8000 4 8000
9 90 900 9000 1 9
9 90 900 9000 2 90
9 90 900 9000 3 900
9 90 900 9000 4 9000
--- 40 row(s) selected.
>>
>> select *
+> from t023t1
+>transpose a+b,b+c,c+d,d+a as c1
+> key by k1;
A B C D K1 C1
----------- ----------- ----------- ----------- ----------- --------------------
0 0 0 0 1 0
0 0 0 0 2 0
0 0 0 0 3 0
0 0 0 0 4 0
1 10 100 1000 1 11
1 10 100 1000 2 110
1 10 100 1000 3 1100
1 10 100 1000 4 1001
2 20 200 2000 1 22
2 20 200 2000 2 220
2 20 200 2000 3 2200
2 20 200 2000 4 2002
3 30 300 3000 1 33
3 30 300 3000 2 330
3 30 300 3000 3 3300
3 30 300 3000 4 3003
4 40 400 4000 1 44
4 40 400 4000 2 440
4 40 400 4000 3 4400
4 40 400 4000 4 4004
5 50 500 5000 1 55
5 50 500 5000 2 550
5 50 500 5000 3 5500
5 50 500 5000 4 5005
6 60 600 6000 1 66
6 60 600 6000 2 660
6 60 600 6000 3 6600
6 60 600 6000 4 6006
7 70 700 7000 1 77
7 70 700 7000 2 770
7 70 700 7000 3 7700
7 70 700 7000 4 7007
8 80 800 8000 1 88
8 80 800 8000 2 880
8 80 800 8000 3 8800
8 80 800 8000 4 8008
9 90 900 9000 1 99
9 90 900 9000 2 990
9 90 900 9000 3 9900
9 90 900 9000 4 9009
--- 40 row(s) selected.
>>
>> select *
+> from t023t1
+>transpose a,b,c,d as c1
+> key by k1
+>transpose c1, k1 as c2
+> key by k2;
A B C D K1 C1 K2 C2
----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
0 0 0 0 1 0 1 0
0 0 0 0 1 0 2 1
0 0 0 0 2 0 1 0
0 0 0 0 2 0 2 2
0 0 0 0 3 0 1 0
0 0 0 0 3 0 2 3
0 0 0 0 4 0 1 0
0 0 0 0 4 0 2 4
1 10 100 1000 1 1 1 1
1 10 100 1000 1 1 2 1
1 10 100 1000 2 10 1 10
1 10 100 1000 2 10 2 2
1 10 100 1000 3 100 1 100
1 10 100 1000 3 100 2 3
1 10 100 1000 4 1000 1 1000
1 10 100 1000 4 1000 2 4
2 20 200 2000 1 2 1 2
2 20 200 2000 1 2 2 1
2 20 200 2000 2 20 1 20
2 20 200 2000 2 20 2 2
2 20 200 2000 3 200 1 200
2 20 200 2000 3 200 2 3
2 20 200 2000 4 2000 1 2000
2 20 200 2000 4 2000 2 4
3 30 300 3000 1 3 1 3
3 30 300 3000 1 3 2 1
3 30 300 3000 2 30 1 30
3 30 300 3000 2 30 2 2
3 30 300 3000 3 300 1 300
3 30 300 3000 3 300 2 3
3 30 300 3000 4 3000 1 3000
3 30 300 3000 4 3000 2 4
4 40 400 4000 1 4 1 4
4 40 400 4000 1 4 2 1
4 40 400 4000 2 40 1 40
4 40 400 4000 2 40 2 2
4 40 400 4000 3 400 1 400
4 40 400 4000 3 400 2 3
4 40 400 4000 4 4000 1 4000
4 40 400 4000 4 4000 2 4
5 50 500 5000 1 5 1 5
5 50 500 5000 1 5 2 1
5 50 500 5000 2 50 1 50
5 50 500 5000 2 50 2 2
5 50 500 5000 3 500 1 500
5 50 500 5000 3 500 2 3
5 50 500 5000 4 5000 1 5000
5 50 500 5000 4 5000 2 4
6 60 600 6000 1 6 1 6
6 60 600 6000 1 6 2 1
6 60 600 6000 2 60 1 60
6 60 600 6000 2 60 2 2
6 60 600 6000 3 600 1 600
6 60 600 6000 3 600 2 3
6 60 600 6000 4 6000 1 6000
6 60 600 6000 4 6000 2 4
7 70 700 7000 1 7 1 7
7 70 700 7000 1 7 2 1
7 70 700 7000 2 70 1 70
7 70 700 7000 2 70 2 2
7 70 700 7000 3 700 1 700
7 70 700 7000 3 700 2 3
7 70 700 7000 4 7000 1 7000
7 70 700 7000 4 7000 2 4
8 80 800 8000 1 8 1 8
8 80 800 8000 1 8 2 1
8 80 800 8000 2 80 1 80
8 80 800 8000 2 80 2 2
8 80 800 8000 3 800 1 800
8 80 800 8000 3 800 2 3
8 80 800 8000 4 8000 1 8000
8 80 800 8000 4 8000 2 4
9 90 900 9000 1 9 1 9
9 90 900 9000 1 9 2 1
9 90 900 9000 2 90 1 90
9 90 900 9000 2 90 2 2
9 90 900 9000 3 900 1 900
9 90 900 9000 3 900 2 3
9 90 900 9000 4 9000 1 9000
9 90 900 9000 4 9000 2 4
--- 80 row(s) selected.
>>
>> select *
+> from t023t1
+>transpose a,b,c,d as c1
+> 1 + a, 2 + b, 3 + c, 4 + d as c2
+> key by k1;
A B C D K1 C1 C2
----------- ----------- ----------- ----------- ----------- ----------- --------------------
0 0 0 0 1 0 ?
0 0 0 0 2 0 ?
0 0 0 0 3 0 ?
0 0 0 0 4 0 ?
0 0 0 0 5 ? 1
0 0 0 0 6 ? 2
0 0 0 0 7 ? 3
0 0 0 0 8 ? 4
1 10 100 1000 1 1 ?
1 10 100 1000 2 10 ?
1 10 100 1000 3 100 ?
1 10 100 1000 4 1000 ?
1 10 100 1000 5 ? 2
1 10 100 1000 6 ? 12
1 10 100 1000 7 ? 103
1 10 100 1000 8 ? 1004
2 20 200 2000 1 2 ?
2 20 200 2000 2 20 ?
2 20 200 2000 3 200 ?
2 20 200 2000 4 2000 ?
2 20 200 2000 5 ? 3
2 20 200 2000 6 ? 22
2 20 200 2000 7 ? 203
2 20 200 2000 8 ? 2004
3 30 300 3000 1 3 ?
3 30 300 3000 2 30 ?
3 30 300 3000 3 300 ?
3 30 300 3000 4 3000 ?
3 30 300 3000 5 ? 4
3 30 300 3000 6 ? 32
3 30 300 3000 7 ? 303
3 30 300 3000 8 ? 3004
4 40 400 4000 1 4 ?
4 40 400 4000 2 40 ?
4 40 400 4000 3 400 ?
4 40 400 4000 4 4000 ?
4 40 400 4000 5 ? 5
4 40 400 4000 6 ? 42
4 40 400 4000 7 ? 403
4 40 400 4000 8 ? 4004
5 50 500 5000 1 5 ?
5 50 500 5000 2 50 ?
5 50 500 5000 3 500 ?
5 50 500 5000 4 5000 ?
5 50 500 5000 5 ? 6
5 50 500 5000 6 ? 52
5 50 500 5000 7 ? 503
5 50 500 5000 8 ? 5004
6 60 600 6000 1 6 ?
6 60 600 6000 2 60 ?
6 60 600 6000 3 600 ?
6 60 600 6000 4 6000 ?
6 60 600 6000 5 ? 7
6 60 600 6000 6 ? 62
6 60 600 6000 7 ? 603
6 60 600 6000 8 ? 6004
7 70 700 7000 1 7 ?
7 70 700 7000 2 70 ?
7 70 700 7000 3 700 ?
7 70 700 7000 4 7000 ?
7 70 700 7000 5 ? 8
7 70 700 7000 6 ? 72
7 70 700 7000 7 ? 703
7 70 700 7000 8 ? 7004
8 80 800 8000 1 8 ?
8 80 800 8000 2 80 ?
8 80 800 8000 3 800 ?
8 80 800 8000 4 8000 ?
8 80 800 8000 5 ? 9
8 80 800 8000 6 ? 82
8 80 800 8000 7 ? 803
8 80 800 8000 8 ? 8004
9 90 900 9000 1 9 ?
9 90 900 9000 2 90 ?
9 90 900 9000 3 900 ?
9 90 900 9000 4 9000 ?
9 90 900 9000 5 ? 10
9 90 900 9000 6 ? 92
9 90 900 9000 7 ? 903
9 90 900 9000 8 ? 9004
--- 80 row(s) selected.
>>
>>
>>-- All combinations of legal clauses with transpose.
>>--
>>-- from_clause
>>-- [where_clause]
>>-- [transpose_clause]+
>>-- [groupby_clause]
>>-- [having_clause]
>>--
>>
>> select *
+> from t023t1
+>transpose a, b, c, d as c1
+> 1, 2, 3, 4 as c2
+> key by k1
+>transpose d, c, b, a as c3
+> key by k2;
A B C D K1 C1 C2 K2 C3
----------- ----------- ----------- ----------- ----------- ----------- ------ ----------- -----------
0 0 0 0 1 0 ? 1 0
0 0 0 0 1 0 ? 2 0
0 0 0 0 1 0 ? 3 0
0 0 0 0 1 0 ? 4 0
0 0 0 0 2 0 ? 1 0
0 0 0 0 2 0 ? 2 0
0 0 0 0 2 0 ? 3 0
0 0 0 0 2 0 ? 4 0
0 0 0 0 3 0 ? 1 0
0 0 0 0 3 0 ? 2 0
0 0 0 0 3 0 ? 3 0
0 0 0 0 3 0 ? 4 0
0 0 0 0 4 0 ? 1 0
0 0 0 0 4 0 ? 2 0
0 0 0 0 4 0 ? 3 0
0 0 0 0 4 0 ? 4 0
0 0 0 0 5 ? 1 1 0
0 0 0 0 5 ? 1 2 0
0 0 0 0 5 ? 1 3 0
0 0 0 0 5 ? 1 4 0
0 0 0 0 6 ? 2 1 0
0 0 0 0 6 ? 2 2 0
0 0 0 0 6 ? 2 3 0
0 0 0 0 6 ? 2 4 0
0 0 0 0 7 ? 3 1 0
0 0 0 0 7 ? 3 2 0
0 0 0 0 7 ? 3 3 0
0 0 0 0 7 ? 3 4 0
0 0 0 0 8 ? 4 1 0
0 0 0 0 8 ? 4 2 0
0 0 0 0 8 ? 4 3 0
0 0 0 0 8 ? 4 4 0
1 10 100 1000 1 1 ? 1 1000
1 10 100 1000 1 1 ? 2 100
1 10 100 1000 1 1 ? 3 10
1 10 100 1000 1 1 ? 4 1
1 10 100 1000 2 10 ? 1 1000
1 10 100 1000 2 10 ? 2 100
1 10 100 1000 2 10 ? 3 10
1 10 100 1000 2 10 ? 4 1
1 10 100 1000 3 100 ? 1 1000
1 10 100 1000 3 100 ? 2 100
1 10 100 1000 3 100 ? 3 10
1 10 100 1000 3 100 ? 4 1
1 10 100 1000 4 1000 ? 1 1000
1 10 100 1000 4 1000 ? 2 100
1 10 100 1000 4 1000 ? 3 10
1 10 100 1000 4 1000 ? 4 1
1 10 100 1000 5 ? 1 1 1000
1 10 100 1000 5 ? 1 2 100
1 10 100 1000 5 ? 1 3 10
1 10 100 1000 5 ? 1 4 1
1 10 100 1000 6 ? 2 1 1000
1 10 100 1000 6 ? 2 2 100
1 10 100 1000 6 ? 2 3 10
1 10 100 1000 6 ? 2 4 1
1 10 100 1000 7 ? 3 1 1000
1 10 100 1000 7 ? 3 2 100
1 10 100 1000 7 ? 3 3 10
1 10 100 1000 7 ? 3 4 1
1 10 100 1000 8 ? 4 1 1000
1 10 100 1000 8 ? 4 2 100
1 10 100 1000 8 ? 4 3 10
1 10 100 1000 8 ? 4 4 1
2 20 200 2000 1 2 ? 1 2000
2 20 200 2000 1 2 ? 2 200
2 20 200 2000 1 2 ? 3 20
2 20 200 2000 1 2 ? 4 2
2 20 200 2000 2 20 ? 1 2000
2 20 200 2000 2 20 ? 2 200
2 20 200 2000 2 20 ? 3 20
2 20 200 2000 2 20 ? 4 2
2 20 200 2000 3 200 ? 1 2000
2 20 200 2000 3 200 ? 2 200
2 20 200 2000 3 200 ? 3 20
2 20 200 2000 3 200 ? 4 2
2 20 200 2000 4 2000 ? 1 2000
2 20 200 2000 4 2000 ? 2 200
2 20 200 2000 4 2000 ? 3 20
2 20 200 2000 4 2000 ? 4 2
2 20 200 2000 5 ? 1 1 2000
2 20 200 2000 5 ? 1 2 200
2 20 200 2000 5 ? 1 3 20
2 20 200 2000 5 ? 1 4 2
2 20 200 2000 6 ? 2 1 2000
2 20 200 2000 6 ? 2 2 200
2 20 200 2000 6 ? 2 3 20
2 20 200 2000 6 ? 2 4 2
2 20 200 2000 7 ? 3 1 2000
2 20 200 2000 7 ? 3 2 200
2 20 200 2000 7 ? 3 3 20
2 20 200 2000 7 ? 3 4 2
2 20 200 2000 8 ? 4 1 2000
2 20 200 2000 8 ? 4 2 200
2 20 200 2000 8 ? 4 3 20
2 20 200 2000 8 ? 4 4 2
3 30 300 3000 1 3 ? 1 3000
3 30 300 3000 1 3 ? 2 300
3 30 300 3000 1 3 ? 3 30
3 30 300 3000 1 3 ? 4 3
3 30 300 3000 2 30 ? 1 3000
3 30 300 3000 2 30 ? 2 300
3 30 300 3000 2 30 ? 3 30
3 30 300 3000 2 30 ? 4 3
3 30 300 3000 3 300 ? 1 3000
3 30 300 3000 3 300 ? 2 300
3 30 300 3000 3 300 ? 3 30
3 30 300 3000 3 300 ? 4 3
3 30 300 3000 4 3000 ? 1 3000
3 30 300 3000 4 3000 ? 2 300
3 30 300 3000 4 3000 ? 3 30
3 30 300 3000 4 3000 ? 4 3
3 30 300 3000 5 ? 1 1 3000
3 30 300 3000 5 ? 1 2 300
3 30 300 3000 5 ? 1 3 30
3 30 300 3000 5 ? 1 4 3
3 30 300 3000 6 ? 2 1 3000
3 30 300 3000 6 ? 2 2 300
3 30 300 3000 6 ? 2 3 30
3 30 300 3000 6 ? 2 4 3
3 30 300 3000 7 ? 3 1 3000
3 30 300 3000 7 ? 3 2 300
3 30 300 3000 7 ? 3 3 30
3 30 300 3000 7 ? 3 4 3
3 30 300 3000 8 ? 4 1 3000
3 30 300 3000 8 ? 4 2 300
3 30 300 3000 8 ? 4 3 30
3 30 300 3000 8 ? 4 4 3
4 40 400 4000 1 4 ? 1 4000
4 40 400 4000 1 4 ? 2 400
4 40 400 4000 1 4 ? 3 40
4 40 400 4000 1 4 ? 4 4
4 40 400 4000 2 40 ? 1 4000
4 40 400 4000 2 40 ? 2 400
4 40 400 4000 2 40 ? 3 40
4 40 400 4000 2 40 ? 4 4
4 40 400 4000 3 400 ? 1 4000
4 40 400 4000 3 400 ? 2 400
4 40 400 4000 3 400 ? 3 40
4 40 400 4000 3 400 ? 4 4
4 40 400 4000 4 4000 ? 1 4000
4 40 400 4000 4 4000 ? 2 400
4 40 400 4000 4 4000 ? 3 40
4 40 400 4000 4 4000 ? 4 4
4 40 400 4000 5 ? 1 1 4000
4 40 400 4000 5 ? 1 2 400
4 40 400 4000 5 ? 1 3 40
4 40 400 4000 5 ? 1 4 4
4 40 400 4000 6 ? 2 1 4000
4 40 400 4000 6 ? 2 2 400
4 40 400 4000 6 ? 2 3 40
4 40 400 4000 6 ? 2 4 4
4 40 400 4000 7 ? 3 1 4000
4 40 400 4000 7 ? 3 2 400
4 40 400 4000 7 ? 3 3 40
4 40 400 4000 7 ? 3 4 4
4 40 400 4000 8 ? 4 1 4000
4 40 400 4000 8 ? 4 2 400
4 40 400 4000 8 ? 4 3 40
4 40 400 4000 8 ? 4 4 4
5 50 500 5000 1 5 ? 1 5000
5 50 500 5000 1 5 ? 2 500
5 50 500 5000 1 5 ? 3 50
5 50 500 5000 1 5 ? 4 5
5 50 500 5000 2 50 ? 1 5000
5 50 500 5000 2 50 ? 2 500
5 50 500 5000 2 50 ? 3 50
5 50 500 5000 2 50 ? 4 5
5 50 500 5000 3 500 ? 1 5000
5 50 500 5000 3 500 ? 2 500
5 50 500 5000 3 500 ? 3 50
5 50 500 5000 3 500 ? 4 5
5 50 500 5000 4 5000 ? 1 5000
5 50 500 5000 4 5000 ? 2 500
5 50 500 5000 4 5000 ? 3 50
5 50 500 5000 4 5000 ? 4 5
5 50 500 5000 5 ? 1 1 5000
5 50 500 5000 5 ? 1 2 500
5 50 500 5000 5 ? 1 3 50
5 50 500 5000 5 ? 1 4 5
5 50 500 5000 6 ? 2 1 5000
5 50 500 5000 6 ? 2 2 500
5 50 500 5000 6 ? 2 3 50
5 50 500 5000 6 ? 2 4 5
5 50 500 5000 7 ? 3 1 5000
5 50 500 5000 7 ? 3 2 500
5 50 500 5000 7 ? 3 3 50
5 50 500 5000 7 ? 3 4 5
5 50 500 5000 8 ? 4 1 5000
5 50 500 5000 8 ? 4 2 500
5 50 500 5000 8 ? 4 3 50
5 50 500 5000 8 ? 4 4 5
6 60 600 6000 1 6 ? 1 6000
6 60 600 6000 1 6 ? 2 600
6 60 600 6000 1 6 ? 3 60
6 60 600 6000 1 6 ? 4 6
6 60 600 6000 2 60 ? 1 6000
6 60 600 6000 2 60 ? 2 600
6 60 600 6000 2 60 ? 3 60
6 60 600 6000 2 60 ? 4 6
6 60 600 6000 3 600 ? 1 6000
6 60 600 6000 3 600 ? 2 600
6 60 600 6000 3 600 ? 3 60
6 60 600 6000 3 600 ? 4 6
6 60 600 6000 4 6000 ? 1 6000
6 60 600 6000 4 6000 ? 2 600
6 60 600 6000 4 6000 ? 3 60
6 60 600 6000 4 6000 ? 4 6
6 60 600 6000 5 ? 1 1 6000
6 60 600 6000 5 ? 1 2 600
6 60 600 6000 5 ? 1 3 60
6 60 600 6000 5 ? 1 4 6
6 60 600 6000 6 ? 2 1 6000
6 60 600 6000 6 ? 2 2 600
6 60 600 6000 6 ? 2 3 60
6 60 600 6000 6 ? 2 4 6
6 60 600 6000 7 ? 3 1 6000
6 60 600 6000 7 ? 3 2 600
6 60 600 6000 7 ? 3 3 60
6 60 600 6000 7 ? 3 4 6
6 60 600 6000 8 ? 4 1 6000
6 60 600 6000 8 ? 4 2 600
6 60 600 6000 8 ? 4 3 60
6 60 600 6000 8 ? 4 4 6
7 70 700 7000 1 7 ? 1 7000
7 70 700 7000 1 7 ? 2 700
7 70 700 7000 1 7 ? 3 70
7 70 700 7000 1 7 ? 4 7
7 70 700 7000 2 70 ? 1 7000
7 70 700 7000 2 70 ? 2 700
7 70 700 7000 2 70 ? 3 70
7 70 700 7000 2 70 ? 4 7
7 70 700 7000 3 700 ? 1 7000
7 70 700 7000 3 700 ? 2 700
7 70 700 7000 3 700 ? 3 70
7 70 700 7000 3 700 ? 4 7
7 70 700 7000 4 7000 ? 1 7000
7 70 700 7000 4 7000 ? 2 700
7 70 700 7000 4 7000 ? 3 70
7 70 700 7000 4 7000 ? 4 7
7 70 700 7000 5 ? 1 1 7000
7 70 700 7000 5 ? 1 2 700
7 70 700 7000 5 ? 1 3 70
7 70 700 7000 5 ? 1 4 7
7 70 700 7000 6 ? 2 1 7000
7 70 700 7000 6 ? 2 2 700
7 70 700 7000 6 ? 2 3 70
7 70 700 7000 6 ? 2 4 7
7 70 700 7000 7 ? 3 1 7000
7 70 700 7000 7 ? 3 2 700
7 70 700 7000 7 ? 3 3 70
7 70 700 7000 7 ? 3 4 7
7 70 700 7000 8 ? 4 1 7000
7 70 700 7000 8 ? 4 2 700
7 70 700 7000 8 ? 4 3 70
7 70 700 7000 8 ? 4 4 7
8 80 800 8000 1 8 ? 1 8000
8 80 800 8000 1 8 ? 2 800
8 80 800 8000 1 8 ? 3 80
8 80 800 8000 1 8 ? 4 8
8 80 800 8000 2 80 ? 1 8000
8 80 800 8000 2 80 ? 2 800
8 80 800 8000 2 80 ? 3 80
8 80 800 8000 2 80 ? 4 8
8 80 800 8000 3 800 ? 1 8000
8 80 800 8000 3 800 ? 2 800
8 80 800 8000 3 800 ? 3 80
8 80 800 8000 3 800 ? 4 8
8 80 800 8000 4 8000 ? 1 8000
8 80 800 8000 4 8000 ? 2 800
8 80 800 8000 4 8000 ? 3 80
8 80 800 8000 4 8000 ? 4 8
8 80 800 8000 5 ? 1 1 8000
8 80 800 8000 5 ? 1 2 800
8 80 800 8000 5 ? 1 3 80
8 80 800 8000 5 ? 1 4 8
8 80 800 8000 6 ? 2 1 8000
8 80 800 8000 6 ? 2 2 800
8 80 800 8000 6 ? 2 3 80
8 80 800 8000 6 ? 2 4 8
8 80 800 8000 7 ? 3 1 8000
8 80 800 8000 7 ? 3 2 800
8 80 800 8000 7 ? 3 3 80
8 80 800 8000 7 ? 3 4 8
8 80 800 8000 8 ? 4 1 8000
8 80 800 8000 8 ? 4 2 800
8 80 800 8000 8 ? 4 3 80
8 80 800 8000 8 ? 4 4 8
9 90 900 9000 1 9 ? 1 9000
9 90 900 9000 1 9 ? 2 900
9 90 900 9000 1 9 ? 3 90
9 90 900 9000 1 9 ? 4 9
9 90 900 9000 2 90 ? 1 9000
9 90 900 9000 2 90 ? 2 900
9 90 900 9000 2 90 ? 3 90
9 90 900 9000 2 90 ? 4 9
9 90 900 9000 3 900 ? 1 9000
9 90 900 9000 3 900 ? 2 900
9 90 900 9000 3 900 ? 3 90
9 90 900 9000 3 900 ? 4 9
9 90 900 9000 4 9000 ? 1 9000
9 90 900 9000 4 9000 ? 2 900
9 90 900 9000 4 9000 ? 3 90
9 90 900 9000 4 9000 ? 4 9
9 90 900 9000 5 ? 1 1 9000
9 90 900 9000 5 ? 1 2 900
9 90 900 9000 5 ? 1 3 90
9 90 900 9000 5 ? 1 4 9
9 90 900 9000 6 ? 2 1 9000
9 90 900 9000 6 ? 2 2 900
9 90 900 9000 6 ? 2 3 90
9 90 900 9000 6 ? 2 4 9
9 90 900 9000 7 ? 3 1 9000
9 90 900 9000 7 ? 3 2 900
9 90 900 9000 7 ? 3 3 90
9 90 900 9000 7 ? 3 4 9
9 90 900 9000 8 ? 4 1 9000
9 90 900 9000 8 ? 4 2 900
9 90 900 9000 8 ? 4 3 90
9 90 900 9000 8 ? 4 4 9
--- 320 row(s) selected.
>>
>> select sum(a)
+> from t023t1
+>transpose a, b, c, d as c1
+> 1, 2, 3, 4 as c2
+> key by k1
+>transpose d, c, b, a as c3
+> key by k2
+> having sum(a) > 10;
(EXPR)
--------------------
1440
--- 1 row(s) selected.
>>
>> select sum(a)
+> from t023t1
+>transpose a, b, c, d as c1
+> 1, 2, 3, 4 as c2
+> key by k1
+>transpose d, c, b, a as c3
+> key by k2
+> group by k1, k2;
(EXPR)
--------------------
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
--- 32 row(s) selected.
>>
>> select sum(a)
+> from t023t1
+>transpose a, b, c, d as c1
+> 1, 2, 3, 4 as c2
+> key by k1
+>transpose d, c, b, a as c3
+> key by k2
+> group by k1, k2
+> having sum(a) > 10;
(EXPR)
--------------------
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
45
--- 32 row(s) selected.
>>
>> select *
+> from t023t1
+> where a > 5
+> and b < 80
+>transpose a, b, c, d as c1
+> 1, 2, 3, 4 as c2
+> key by k1
+>transpose d, c, b, a as c3
+> key by k2;
A B C D K1 C1 C2 K2 C3
----------- ----------- ----------- ----------- ----------- ----------- ------ ----------- -----------
6 60 600 6000 1 6 ? 1 6000
6 60 600 6000 1 6 ? 2 600
6 60 600 6000 1 6 ? 3 60
6 60 600 6000 1 6 ? 4 6
6 60 600 6000 2 60 ? 1 6000
6 60 600 6000 2 60 ? 2 600
6 60 600 6000 2 60 ? 3 60
6 60 600 6000 2 60 ? 4 6
6 60 600 6000 3 600 ? 1 6000
6 60 600 6000 3 600 ? 2 600
6 60 600 6000 3 600 ? 3 60
6 60 600 6000 3 600 ? 4 6
6 60 600 6000 4 6000 ? 1 6000
6 60 600 6000 4 6000 ? 2 600
6 60 600 6000 4 6000 ? 3 60
6 60 600 6000 4 6000 ? 4 6
6 60 600 6000 5 ? 1 1 6000
6 60 600 6000 5 ? 1 2 600
6 60 600 6000 5 ? 1 3 60
6 60 600 6000 5 ? 1 4 6
6 60 600 6000 6 ? 2 1 6000
6 60 600 6000 6 ? 2 2 600
6 60 600 6000 6 ? 2 3 60
6 60 600 6000 6 ? 2 4 6
6 60 600 6000 7 ? 3 1 6000
6 60 600 6000 7 ? 3 2 600
6 60 600 6000 7 ? 3 3 60
6 60 600 6000 7 ? 3 4 6
6 60 600 6000 8 ? 4 1 6000
6 60 600 6000 8 ? 4 2 600
6 60 600 6000 8 ? 4 3 60
6 60 600 6000 8 ? 4 4 6
7 70 700 7000 1 7 ? 1 7000
7 70 700 7000 1 7 ? 2 700
7 70 700 7000 1 7 ? 3 70
7 70 700 7000 1 7 ? 4 7
7 70 700 7000 2 70 ? 1 7000
7 70 700 7000 2 70 ? 2 700
7 70 700 7000 2 70 ? 3 70
7 70 700 7000 2 70 ? 4 7
7 70 700 7000 3 700 ? 1 7000
7 70 700 7000 3 700 ? 2 700
7 70 700 7000 3 700 ? 3 70
7 70 700 7000 3 700 ? 4 7
7 70 700 7000 4 7000 ? 1 7000
7 70 700 7000 4 7000 ? 2 700
7 70 700 7000 4 7000 ? 3 70
7 70 700 7000 4 7000 ? 4 7
7 70 700 7000 5 ? 1 1 7000
7 70 700 7000 5 ? 1 2 700
7 70 700 7000 5 ? 1 3 70
7 70 700 7000 5 ? 1 4 7
7 70 700 7000 6 ? 2 1 7000
7 70 700 7000 6 ? 2 2 700
7 70 700 7000 6 ? 2 3 70
7 70 700 7000 6 ? 2 4 7
7 70 700 7000 7 ? 3 1 7000
7 70 700 7000 7 ? 3 2 700
7 70 700 7000 7 ? 3 3 70
7 70 700 7000 7 ? 3 4 7
7 70 700 7000 8 ? 4 1 7000
7 70 700 7000 8 ? 4 2 700
7 70 700 7000 8 ? 4 3 70
7 70 700 7000 8 ? 4 4 7
--- 64 row(s) selected.
>>
>> select sum(a)
+> from t023t1
+> where a > 5
+> and b < 80
+>transpose a, b, c, d as c1
+> 1, 2, 3, 4 as c2
+> key by k1
+>transpose d, c, b, a as c3
+> key by k2
+> having sum(a) > 10;
(EXPR)
--------------------
416
--- 1 row(s) selected.
>>
>> select sum(a)
+> from t023t1
+> where a > 5
+> and b < 80
+>transpose a, b, c, d as c1
+> 1, 2, 3, 4 as c2
+> key by k1
+>transpose d, c, b, a as c3
+> key by k2
+> group by k1, k2;
(EXPR)
--------------------
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
--- 32 row(s) selected.
>>
>> select sum(a)
+> from t023t1
+> where a > 5
+> and b < 80
+>transpose a, b, c, d as c1
+> 1, 2, 3, 4 as c2
+> key by k1
+>transpose d, c, b, a as c3
+> key by k2
+> group by k1, k2
+> having sum(a) > 10;
(EXPR)
--------------------
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
--- 32 row(s) selected.
>>
>>
>>-- Subqueries within the Transpose expressions.
>>
>> select *
+> from t023t1
+>transpose a,b,c,d as c1
+> (select sum(a) from t023t2),
+> (select sum(b) from t023t2),
+> (select sum(c) from t023t2),
+> (select sum(d) from t023t2) as c2
+> key by k1;
A B C D K1 C1 C2
----------- ----------- ----------- ----------- ----------- ----------- --------------------
0 0 0 0 1 0 ?
0 0 0 0 2 0 ?
0 0 0 0 3 0 ?
0 0 0 0 4 0 ?
0 0 0 0 5 ? 4950
0 0 0 0 6 ? 450
0 0 0 0 7 ? 4500
0 0 0 0 8 ? 45000
9 90 900 9000 1 9 ?
9 90 900 9000 2 90 ?
9 90 900 9000 3 900 ?
9 90 900 9000 4 9000 ?
9 90 900 9000 5 ? 4950
9 90 900 9000 6 ? 450
9 90 900 9000 7 ? 4500
9 90 900 9000 8 ? 45000
8 80 800 8000 1 8 ?
8 80 800 8000 2 80 ?
8 80 800 8000 3 800 ?
8 80 800 8000 4 8000 ?
8 80 800 8000 5 ? 4950
8 80 800 8000 6 ? 450
8 80 800 8000 7 ? 4500
8 80 800 8000 8 ? 45000
7 70 700 7000 1 7 ?
7 70 700 7000 2 70 ?
7 70 700 7000 3 700 ?
7 70 700 7000 4 7000 ?
7 70 700 7000 5 ? 4950
7 70 700 7000 6 ? 450
7 70 700 7000 7 ? 4500
7 70 700 7000 8 ? 45000
6 60 600 6000 1 6 ?
6 60 600 6000 2 60 ?
6 60 600 6000 3 600 ?
6 60 600 6000 4 6000 ?
6 60 600 6000 5 ? 4950
6 60 600 6000 6 ? 450
6 60 600 6000 7 ? 4500
6 60 600 6000 8 ? 45000
5 50 500 5000 1 5 ?
5 50 500 5000 2 50 ?
5 50 500 5000 3 500 ?
5 50 500 5000 4 5000 ?
5 50 500 5000 5 ? 4950
5 50 500 5000 6 ? 450
5 50 500 5000 7 ? 4500
5 50 500 5000 8 ? 45000
4 40 400 4000 1 4 ?
4 40 400 4000 2 40 ?
4 40 400 4000 3 400 ?
4 40 400 4000 4 4000 ?
4 40 400 4000 5 ? 4950
4 40 400 4000 6 ? 450
4 40 400 4000 7 ? 4500
4 40 400 4000 8 ? 45000
3 30 300 3000 1 3 ?
3 30 300 3000 2 30 ?
3 30 300 3000 3 300 ?
3 30 300 3000 4 3000 ?
3 30 300 3000 5 ? 4950
3 30 300 3000 6 ? 450
3 30 300 3000 7 ? 4500
3 30 300 3000 8 ? 45000
2 20 200 2000 1 2 ?
2 20 200 2000 2 20 ?
2 20 200 2000 3 200 ?
2 20 200 2000 4 2000 ?
2 20 200 2000 5 ? 4950
2 20 200 2000 6 ? 450
2 20 200 2000 7 ? 4500
2 20 200 2000 8 ? 45000
1 10 100 1000 1 1 ?
1 10 100 1000 2 10 ?
1 10 100 1000 3 100 ?
1 10 100 1000 4 1000 ?
1 10 100 1000 5 ? 4950
1 10 100 1000 6 ? 450
1 10 100 1000 7 ? 4500
1 10 100 1000 8 ? 45000
--- 80 row(s) selected.
>>
>>-- Queries typical of DataMining application
>>-- Calculate multiple crosstables, trunctating the IV's
>>--
>> select ctid, iv, b, count(*)
+> from t023t3
+>transpose Cast(a/100 as int),
+> c - (Cast(c/10 as int) * 10),
+> d - (Cast(d/3 as int) * 3) as iv
+> key by ctid
+> group by ctid, iv, b;
CTID IV B (EXPR)
----------- -------------------- ----------- --------------------
2 1 1 100
3 1 1 40
2 3 3 100
3 1 4 40
2 5 5 100
2 7 7 100
3 1 7 40
2 9 9 100
3 1 0 30
3 1 3 30
3 1 6 30
3 1 9 30
3 1 2 30
3 1 5 30
3 1 8 30
1 1 0 10
1 1 1 10
1 1 2 10
1 1 3 10
1 1 4 10
1 1 5 10
1 1 6 10
1 1 7 10
1 1 8 10
1 1 9 10
1 3 0 10
1 3 1 10
1 3 2 10
1 3 3 10
1 3 4 10
1 3 5 10
1 3 6 10
1 3 7 10
1 3 8 10
1 3 9 10
1 5 0 10
1 5 1 10
1 5 2 10
1 5 3 10
1 5 4 10
1 5 5 10
1 5 6 10
1 5 7 10
1 5 8 10
1 5 9 10
1 7 0 10
1 7 1 10
1 7 2 10
1 7 3 10
1 7 4 10
1 7 5 10
1 7 6 10
1 7 7 10
1 7 8 10
1 7 9 10
1 9 0 10
1 9 1 10
1 9 2 10
1 9 3 10
1 9 4 10
1 9 5 10
1 9 6 10
1 9 7 10
1 9 8 10
1 9 9 10
1 0 0 10
2 0 0 100
3 0 0 40
1 0 1 10
1 0 2 10
2 2 2 100
3 2 2 40
1 0 3 10
3 0 3 40
1 0 4 10
2 4 4 100
1 0 5 10
3 2 5 40
1 0 6 10
2 6 6 100
3 0 6 40
1 0 7 10
1 0 8 10
2 8 8 100
3 2 8 40
1 0 9 10
3 0 9 40
3 2 1 30
3 0 2 30
3 2 4 30
3 0 5 30
3 2 7 30
3 0 8 30
3 2 0 30
3 0 1 30
3 2 3 30
3 0 4 30
3 2 6 30
3 0 7 30
3 2 9 30
1 2 0 10
1 2 1 10
1 2 2 10
1 2 3 10
1 2 4 10
1 2 5 10
1 2 6 10
1 2 7 10
1 2 8 10
1 2 9 10
1 4 0 10
1 4 1 10
1 4 2 10
1 4 3 10
1 4 4 10
1 4 5 10
1 4 6 10
1 4 7 10
1 4 8 10
1 4 9 10
1 6 0 10
1 6 1 10
1 6 2 10
1 6 3 10
1 6 4 10
1 6 5 10
1 6 6 10
1 6 7 10
1 6 8 10
1 6 9 10
1 8 0 10
1 8 1 10
1 8 2 10
1 8 3 10
1 8 4 10
1 8 5 10
1 8 6 10
1 8 7 10
1 8 8 10
1 8 9 10
--- 140 row(s) selected.
>>
>>-- Calculate each crosstable independently.
>>
>> select ctid, iv, b, count(*)
+> from t023t3
+>transpose Cast(a/100 as int) as iv
+> key by ctid
+> group by ctid, iv, b;
CTID IV B (EXPR)
----------- ----------- ----------- --------------------
1 1 0 10
1 1 1 10
1 1 2 10
1 1 3 10
1 1 4 10
1 1 5 10
1 1 6 10
1 1 7 10
1 1 8 10
1 1 9 10
1 3 0 10
1 3 1 10
1 3 2 10
1 3 3 10
1 3 4 10
1 3 5 10
1 3 6 10
1 3 7 10
1 3 8 10
1 3 9 10
1 5 0 10
1 5 1 10
1 5 2 10
1 5 3 10
1 5 4 10
1 5 5 10
1 5 6 10
1 5 7 10
1 5 8 10
1 5 9 10
1 7 0 10
1 7 1 10
1 7 2 10
1 7 3 10
1 7 4 10
1 7 5 10
1 7 6 10
1 7 7 10
1 7 8 10
1 7 9 10
1 9 0 10
1 9 1 10
1 9 2 10
1 9 3 10
1 9 4 10
1 9 5 10
1 9 6 10
1 9 7 10
1 9 8 10
1 9 9 10
1 0 0 10
1 0 1 10
1 0 2 10
1 0 3 10
1 0 4 10
1 0 5 10
1 0 6 10
1 0 7 10
1 0 8 10
1 0 9 10
1 2 0 10
1 2 1 10
1 2 2 10
1 2 3 10
1 2 4 10
1 2 5 10
1 2 6 10
1 2 7 10
1 2 8 10
1 2 9 10
1 4 0 10
1 4 1 10
1 4 2 10
1 4 3 10
1 4 4 10
1 4 5 10
1 4 6 10
1 4 7 10
1 4 8 10
1 4 9 10
1 6 0 10
1 6 1 10
1 6 2 10
1 6 3 10
1 6 4 10
1 6 5 10
1 6 6 10
1 6 7 10
1 6 8 10
1 6 9 10
1 8 0 10
1 8 1 10
1 8 2 10
1 8 3 10
1 8 4 10
1 8 5 10
1 8 6 10
1 8 7 10
1 8 8 10
1 8 9 10
--- 100 row(s) selected.
>>
>> select ctid, iv, b, count(*)
+> from t023t3
+>transpose c - (Cast(c/10 as int) * 10) as iv
+> key by ctid
+> group by ctid, iv, b;
CTID IV B (EXPR)
----------- -------------------- ----------- --------------------
1 1 1 100
1 3 3 100
1 5 5 100
1 7 7 100
1 9 9 100
1 0 0 100
1 2 2 100
1 4 4 100
1 6 6 100
1 8 8 100
--- 10 row(s) selected.
>>
>> select ctid, iv, b, count(*)
+> from t023t3
+>transpose d - (Cast(d/3 as int) * 3) as iv
+> key by ctid
+> group by ctid, iv, b;
CTID IV B (EXPR)
----------- -------------------- ----------- --------------------
1 1 1 40
1 1 4 40
1 1 7 40
1 1 0 30
1 1 3 30
1 1 6 30
1 1 9 30
1 1 2 30
1 1 5 30
1 1 8 30
1 0 0 40
1 2 2 40
1 0 3 40
1 2 5 40
1 0 6 40
1 2 8 40
1 0 9 40
1 2 1 30
1 0 2 30
1 2 4 30
1 0 5 30
1 2 7 30
1 0 8 30
1 2 0 30
1 0 1 30
1 2 3 30
1 0 4 30
1 2 6 30
1 0 7 30
1 2 9 30
--- 30 row(s) selected.
>>
>>
>>-- Query typical of a continuous crosstable.
>>
>> select ctid, b, Cast(count(*) as int),
+> Cast(avg(iv) as int),
+> Cast(variance(iv) as int),
+> Cast(stddev(iv) as int)
+> from t023t3
+>transpose a, c, b as iv
+> key by ctid
+> group by ctid, b
+> order by ctid, b;
CTID B (EXPR) (EXPR) (EXPR) (EXPR)
----------- ----------- ----------- ----------- ----------- -----------
1 0 100 495 84166 290
1 1 100 496 84166 290
1 2 100 497 84166 290
1 3 100 498 84166 290
1 4 100 499 84166 290
1 5 100 500 84166 290
1 6 100 501 84166 290
1 7 100 502 84166 290
1 8 100 503 84166 290
1 9 100 504 84166 290
2 0 100 45 833 28
2 1 100 46 833 28
2 2 100 47 833 28
2 3 100 48 833 28
2 4 100 49 833 28
2 5 100 50 833 28
2 6 100 51 833 28
2 7 100 52 833 28
2 8 100 53 833 28
2 9 100 54 833 28
3 0 100 0 0 0
3 1 100 1 0 0
3 2 100 2 0 0
3 3 100 3 0 0
3 4 100 4 0 0
3 5 100 5 0 0
3 6 100 6 0 0
3 7 100 7 0 0
3 8 100 8 0 0
3 9 100 9 0 0
--- 30 row(s) selected.
>>
>> select ctid, b, count(*)
+> from t023t3
+>transpose a, c, b as iv
+> key by ctid
+> group by ctid, b
+> order by ctid, b;
CTID B (EXPR)
----------- ----------- --------------------
1 0 100
1 1 100
1 2 100
1 3 100
1 4 100
1 5 100
1 6 100
1 7 100
1 8 100
1 9 100
2 0 100
2 1 100
2 2 100
2 3 100
2 4 100
2 5 100
2 6 100
2 7 100
2 8 100
2 9 100
3 0 100
3 1 100
3 2 100
3 3 100
3 4 100
3 5 100
3 6 100
3 7 100
3 8 100
3 9 100
--- 30 row(s) selected.
>>
>>-- A transpose within a subquery with correlated values
>>-- within the transpose expressions.
>>
>> select t1.a, t2.b
+> from t023t1 t1, t023t2 t2
+> where t1.a = t2.a
+> and t1.c < (select sum(c1)
+> from t023t3 t3
+> where t3.c < t2.d
+> transpose t1.a, t2.b as c1
+> key by k1);
A B
----------- -----------
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
--- 9 row(s) selected.
>>
>>-- This query could create a VEG between t1.k1 and t2.k2
>>-- but, for now, VEG's are not created between ValueIDUnion nodes.
>>-- To enable VEGRefs for ValueIDUnion nodes, change ValueIdUnion::
>>-- normalizeNode() to replace with a VegRef (if possible).
>>-- To allow ValueIdUnion nodes in a VEG, alter isAColumnReference()
>>-- to include ITM_VALUEIDUNION.
>>--
>> select *
+> from (select k1,c1
+> from t023t1
+> transpose a,b,c as c1
+> key by k1) as t1,
+> (select k2,c2
+> from t023t1
+> transpose c,b,a as c2
+> key by k2) as t2
+> where t1.k1 = t2.k2
+> and t1.k1 < 3;
K1 C1 K2 C2
----------- ----------- ----------- -----------
1 0 1 0
1 0 1 900
1 0 1 800
1 0 1 700
1 0 1 600
1 0 1 500
1 0 1 400
1 0 1 300
1 0 1 200
1 0 1 100
2 0 2 0
2 0 2 90
2 0 2 80
2 0 2 70
2 0 2 60
2 0 2 50
2 0 2 40
2 0 2 30
2 0 2 20
2 0 2 10
1 1 1 0
1 1 1 900
1 1 1 800
1 1 1 700
1 1 1 600
1 1 1 500
1 1 1 400
1 1 1 300
1 1 1 200
1 1 1 100
2 10 2 0
2 10 2 90
2 10 2 80
2 10 2 70
2 10 2 60
2 10 2 50
2 10 2 40
2 10 2 30
2 10 2 20
2 10 2 10
1 2 1 0
1 2 1 900
1 2 1 800
1 2 1 700
1 2 1 600
1 2 1 500
1 2 1 400
1 2 1 300
1 2 1 200
1 2 1 100
2 20 2 0
2 20 2 90
2 20 2 80
2 20 2 70
2 20 2 60
2 20 2 50
2 20 2 40
2 20 2 30
2 20 2 20
2 20 2 10
1 3 1 0
1 3 1 900
1 3 1 800
1 3 1 700
1 3 1 600
1 3 1 500
1 3 1 400
1 3 1 300
1 3 1 200
1 3 1 100
2 30 2 0
2 30 2 90
2 30 2 80
2 30 2 70
2 30 2 60
2 30 2 50
2 30 2 40
2 30 2 30
2 30 2 20
2 30 2 10
1 4 1 0
1 4 1 900
1 4 1 800
1 4 1 700
1 4 1 600
1 4 1 500
1 4 1 400
1 4 1 300
1 4 1 200
1 4 1 100
2 40 2 0
2 40 2 90
2 40 2 80
2 40 2 70
2 40 2 60
2 40 2 50
2 40 2 40
2 40 2 30
2 40 2 20
2 40 2 10
1 5 1 0
1 5 1 900
1 5 1 800
1 5 1 700
1 5 1 600
1 5 1 500
1 5 1 400
1 5 1 300
1 5 1 200
1 5 1 100
2 50 2 0
2 50 2 90
2 50 2 80
2 50 2 70
2 50 2 60
2 50 2 50
2 50 2 40
2 50 2 30
2 50 2 20
2 50 2 10
1 6 1 0
1 6 1 900
1 6 1 800
1 6 1 700
1 6 1 600
1 6 1 500
1 6 1 400
1 6 1 300
1 6 1 200
1 6 1 100
2 60 2 0
2 60 2 90
2 60 2 80
2 60 2 70
2 60 2 60
2 60 2 50
2 60 2 40
2 60 2 30
2 60 2 20
2 60 2 10
1 7 1 0
1 7 1 900
1 7 1 800
1 7 1 700
1 7 1 600
1 7 1 500
1 7 1 400
1 7 1 300
1 7 1 200
1 7 1 100
2 70 2 0
2 70 2 90
2 70 2 80
2 70 2 70
2 70 2 60
2 70 2 50
2 70 2 40
2 70 2 30
2 70 2 20
2 70 2 10
1 8 1 0
1 8 1 900
1 8 1 800
1 8 1 700
1 8 1 600
1 8 1 500
1 8 1 400
1 8 1 300
1 8 1 200
1 8 1 100
2 80 2 0
2 80 2 90
2 80 2 80
2 80 2 70
2 80 2 60
2 80 2 50
2 80 2 40
2 80 2 30
2 80 2 20
2 80 2 10
1 9 1 0
1 9 1 900
1 9 1 800
1 9 1 700
1 9 1 600
1 9 1 500
1 9 1 400
1 9 1 300
1 9 1 200
1 9 1 100
2 90 2 0
2 90 2 90
2 90 2 80
2 90 2 70
2 90 2 60
2 90 2 50
2 90 2 40
2 90 2 30
2 90 2 20
2 90 2 10
--- 200 row(s) selected.
>>
>>-- This is the type of query that may be generated when scanning a packed
>>-- vertically partitioned table. Here we simulate four VP's with the tables
>>-- t023t4, t023t5, t023t6, and t023t7. Each of the tables contains the data
>>-- for one column of the 'base' table. The VP's are also packed with the
>>-- packing factors of 4, 8, 8, and 16 for the VP's respectively. The following
>>-- query first unpacks each VP to a packing factor of 4 then joins the
>>-- results to form a packed (non-VP) table. This result is then unpacked to
>>-- a packing factor of 1 (non-packed). Unpacking is accomplished through use
>>-- of the Transpose operator.
>>
>>select a,b,c,d
+>from
+>(select (skp + (k - 1)) as skp2, numRowsp2, a,b,c, d
+> from
+> (select VP1.skp, VP1.numRowsp, ap0, bp0, cp0, dp0,
+> ap1, bp1, cp1, dp1,
+> ap2, bp2, cp2, dp2,
+> ap3, bp3, cp3, dp3
+> from (select sk as skp, numRows as numRowsp,
+> a0 as ap0, a1 as ap1, a2 as ap2, a3 as ap3
+> from t023t4) as VP1,
+> (select sk + ((k - 1) * 4) as skp, numRowsp, bp0, bp1, bp2, bp3
+> from t023t5
+> transpose (case when numRows > 4 then 4 else numRows end,
+> b0,b1,b2,b3),
+> (case when numRows > 4 then numRows - 4 else 0 end,
+> b4,b5,b6,b7)
+> as (numRowsp, bp0,bp1,bp2,bp3)
+> key by k) as VP2,
+> (select sk + ((k - 1) * 4) as skp, numRowsp, cp0, cp1, cp2, cp3
+> from t023t6
+> transpose (case when numRows > 4 then 4 else numRows end,
+> c0,c1,c2,c3),
+> (case when numRows > 4 then numRows - 4 else 0 end,
+> c4,c5,c6,c7)
+> as (numRowsp, cp0,cp1,cp2,cp3)
+> key by k) as VP3,
+> (select sk + ((k - 1) * 4) as skp, numRowsp, dp0, dp1, dp2, dp3
+> from t023t7
+> transpose (case when numRows > 4 then 4 else numRows end,
+> d0,d1,d2,d3),
+> (case when numRows > 8 then 4 else
+> case when numRows > 4 then numRows - 4 else 0 end end,
+> d4,d5,d6,d7),
+> (case when numRows > 12 then 4 else
+> case when numRows > 8 then numRows - 8 else 0 end end,
+> d8,d9,d10,d11),
+> (case when numRows > 12 then numRows - 12 else 0 end,
+> d12,d13,d14,d15)
+> as (numRowsp, dp0,dp1,dp2,dp3)
+> key by k) as VP4
+>
+> where VP1.skp = VP2.skp
+> and VP2.skp = VP3.skp
+> and VP3.skp = VP4.skp
+> ) as P1
+> transpose (case when numRowsp > 0 then 1 else 0 end,
+> ap0, bp0, cp0, dp0),
+> (case when numRowsp > 1 then 1 else 0 end,
+> ap1, bp1, cp1, dp1),
+> (case when numRowsp > 2 then 1 else 0 end,
+> ap2, bp2, cp2, dp2),
+> (case when numRowsp > 3 then 1 else 0 end,
+> ap3, bp3, cp3, dp3) as (numRowsp2, a,b,c,d)
+> key by k) as P2
+>where numRowsp2 = 1;
A B C D
----------- ----------- ----------- -----------
0 100 200 300
1 101 201 301
2 102 202 302
3 103 203 303
4 104 204 304
5 105 205 305
6 106 206 306
7 107 207 307
8 108 208 308
9 109 209 309
10 110 210 310
11 111 211 311
12 112 212 312
13 113 213 313
14 114 214 314
15 115 215 315
16 116 216 316
17 117 217 317
18 118 218 318
19 119 219 319
20 120 220 320
21 121 221 321
22 122 222 322
23 123 223 323
24 124 224 324
25 125 225 325
26 126 226 326
27 127 227 327
28 128 228 328
29 129 229 329
30 130 230 330
31 131 231 331
32 132 232 332
33 133 233 333
34 134 234 334
35 135 235 335
--- 36 row(s) selected.
>>
>>
>>?section clnup
>>-- CLEANUP database
>>drop table t023t1;
--- SQL operation complete.
>>drop table t023t2;
--- SQL operation complete.
>>drop table t023t3;
--- SQL operation complete.
>>
>>drop table t023t4;
--- SQL operation complete.
>>drop table t023t5;
--- SQL operation complete.
>>drop table t023t6;
--- SQL operation complete.
>>drop table t023t7;
--- SQL operation complete.
>>
>>log;