0001
0002
0003
0004
0005 create temporary view courseSales as select * from values
0006 ("dotNET", 2012, 10000),
0007 ("Java", 2012, 20000),
0008 ("dotNET", 2012, 5000),
0009 ("dotNET", 2013, 48000),
0010 ("Java", 2013, 30000)
0011 as courseSales(course, year, earnings);
0012
0013 create temporary view years as select * from values
0014 (2012, 1),
0015 (2013, 2)
0016 as years(y, s);
0017
0018 create temporary view yearsWithComplexTypes as select * from values
0019 (2012, array(1, 1), map('1', 1), struct(1, 'a')),
0020 (2013, array(2, 2), map('2', 2), struct(2, 'b'))
0021 as yearsWithComplexTypes(y, a, m, s);
0022
0023
0024 SELECT * FROM (
0025 SELECT udf(year), course, earnings FROM courseSales
0026 )
0027 PIVOT (
0028 udf(sum(earnings))
0029 FOR course IN ('dotNET', 'Java')
0030 );
0031
0032
0033 SELECT * FROM courseSales
0034 PIVOT (
0035 udf(sum(earnings))
0036 FOR year IN (2012, 2013)
0037 );
0038
0039
0040 SELECT * FROM (
0041 SELECT year, course, earnings FROM courseSales
0042 )
0043 PIVOT (
0044 udf(sum(earnings)), udf(avg(earnings))
0045 FOR course IN ('dotNET', 'Java')
0046 );
0047
0048
0049 SELECT * FROM (
0050 SELECT udf(course) as course, earnings FROM courseSales
0051 )
0052 PIVOT (
0053 udf(sum(earnings))
0054 FOR course IN ('dotNET', 'Java')
0055 );
0056
0057
0058 SELECT * FROM (
0059 SELECT year, course, earnings FROM courseSales
0060 )
0061 PIVOT (
0062 udf(sum(udf(earnings))), udf(min(year))
0063 FOR course IN ('dotNET', 'Java')
0064 );
0065
0066
0067 SELECT * FROM (
0068 SELECT course, year, earnings, udf(s) as s
0069 FROM courseSales
0070 JOIN years ON year = y
0071 )
0072 PIVOT (
0073 udf(sum(earnings))
0074 FOR s IN (1, 2)
0075 );
0076
0077
0078 SELECT * FROM (
0079 SELECT course, year, earnings, s
0080 FROM courseSales
0081 JOIN years ON year = y
0082 )
0083 PIVOT (
0084 udf(sum(earnings)), udf(min(s))
0085 FOR course IN ('dotNET', 'Java')
0086 );
0087
0088
0089 SELECT * FROM (
0090 SELECT course, year, earnings, s
0091 FROM courseSales
0092 JOIN years ON year = y
0093 )
0094 PIVOT (
0095 udf(sum(earnings * s))
0096 FOR course IN ('dotNET', 'Java')
0097 );
0098
0099
0100 SELECT 2012_s, 2013_s, 2012_a, 2013_a, c FROM (
0101 SELECT year y, course c, earnings e FROM courseSales
0102 )
0103 PIVOT (
0104 udf(sum(e)) s, udf(avg(e)) a
0105 FOR y IN (2012, 2013)
0106 );
0107
0108
0109 SELECT firstYear_s, secondYear_s, firstYear_a, secondYear_a, c FROM (
0110 SELECT year y, course c, earnings e FROM courseSales
0111 )
0112 PIVOT (
0113 udf(sum(e)) s, udf(avg(e)) a
0114 FOR y IN (2012 as firstYear, 2013 secondYear)
0115 );
0116
0117
0118 SELECT * FROM courseSales
0119 PIVOT (
0120 udf(abs(earnings))
0121 FOR year IN (2012, 2013)
0122 );
0123
0124
0125 SELECT * FROM (
0126 SELECT year, course, earnings FROM courseSales
0127 )
0128 PIVOT (
0129 udf(sum(earnings)), year
0130 FOR course IN ('dotNET', 'Java')
0131 );
0132
0133
0134 SELECT * FROM (
0135 SELECT course, earnings FROM courseSales
0136 )
0137 PIVOT (
0138 udf(sum(earnings))
0139 FOR year IN (2012, 2013)
0140 );
0141
0142
0143 SELECT * FROM (
0144 SELECT year, course, earnings FROM courseSales
0145 )
0146 PIVOT (
0147 udf(ceil(udf(sum(earnings)))), avg(earnings) + 1 as a1
0148 FOR course IN ('dotNET', 'Java')
0149 );
0150
0151
0152 SELECT * FROM (
0153 SELECT year, course, earnings FROM courseSales
0154 )
0155 PIVOT (
0156 sum(udf(avg(earnings)))
0157 FOR course IN ('dotNET', 'Java')
0158 );
0159
0160
0161 SELECT * FROM (
0162 SELECT course, year, earnings, s
0163 FROM courseSales
0164 JOIN years ON year = y
0165 )
0166 PIVOT (
0167 udf(sum(earnings))
0168 FOR (course, year) IN (('dotNET', 2012), ('Java', 2013))
0169 );
0170
0171
0172 SELECT * FROM (
0173 SELECT course, year, earnings, s
0174 FROM courseSales
0175 JOIN years ON year = y
0176 )
0177 PIVOT (
0178 udf(sum(earnings))
0179 FOR (course, s) IN (('dotNET', 2) as c1, ('Java', 1) as c2)
0180 );
0181
0182
0183 SELECT * FROM (
0184 SELECT course, year, earnings, s
0185 FROM courseSales
0186 JOIN years ON year = y
0187 )
0188 PIVOT (
0189 udf(sum(earnings))
0190 FOR (course, year) IN ('dotNET', 'Java')
0191 );
0192
0193
0194 SELECT * FROM courseSales
0195 PIVOT (
0196 udf(sum(earnings))
0197 FOR year IN (s, 2013)
0198 );
0199
0200
0201 SELECT * FROM courseSales
0202 PIVOT (
0203 udf(sum(earnings))
0204 FOR year IN (course, 2013)
0205 );
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232 SELECT * FROM (
0233 SELECT earnings, year, a
0234 FROM courseSales
0235 JOIN yearsWithComplexTypes ON year = y
0236 )
0237 PIVOT (
0238 udf(sum(earnings))
0239 FOR a IN (array(1, 1), array(2, 2))
0240 );
0241
0242
0243 SELECT * FROM (
0244 SELECT course, earnings, udf(year) as year, a
0245 FROM courseSales
0246 JOIN yearsWithComplexTypes ON year = y
0247 )
0248 PIVOT (
0249 udf(sum(earnings))
0250 FOR (course, a) IN (('dotNET', array(1, 1)), ('Java', array(2, 2)))
0251 );
0252
0253
0254 SELECT * FROM (
0255 SELECT earnings, year, s
0256 FROM courseSales
0257 JOIN yearsWithComplexTypes ON year = y
0258 )
0259 PIVOT (
0260 udf(sum(earnings))
0261 FOR s IN ((1, 'a'), (2, 'b'))
0262 );
0263
0264
0265 SELECT * FROM (
0266 SELECT course, earnings, year, s
0267 FROM courseSales
0268 JOIN yearsWithComplexTypes ON year = y
0269 )
0270 PIVOT (
0271 udf(sum(earnings))
0272 FOR (course, s) IN (('dotNET', (1, 'a')), ('Java', (2, 'b')))
0273 );
0274
0275
0276 SELECT * FROM (
0277 SELECT earnings, year, m
0278 FROM courseSales
0279 JOIN yearsWithComplexTypes ON year = y
0280 )
0281 PIVOT (
0282 udf(sum(earnings))
0283 FOR m IN (map('1', 1), map('2', 2))
0284 );
0285
0286
0287 SELECT * FROM (
0288 SELECT course, earnings, year, m
0289 FROM courseSales
0290 JOIN yearsWithComplexTypes ON year = y
0291 )
0292 PIVOT (
0293 udf(sum(earnings))
0294 FOR (course, m) IN (('dotNET', map('1', 1)), ('Java', map('2', 2)))
0295 );
0296
0297
0298
0299 SELECT * FROM (
0300 SELECT course, earnings, udf("a") as a, udf("z") as z, udf("b") as b, udf("y") as y,
0301 udf("c") as c, udf("x") as x, udf("d") as d, udf("w") as w
0302 FROM courseSales
0303 )
0304 PIVOT (
0305 udf(sum(Earnings))
0306 FOR Course IN ('dotNET', 'Java')
0307 );