Skip to content

Commit 168589b

Browse files
committed
VPivot.Oracle.sql
1 parent 542ba1f commit 168589b

File tree

8 files changed

+337
-18
lines changed

8 files changed

+337
-18
lines changed

T4SQLTemplateLibrary/Databases/Oracle/Test/Scripts/2-InitData/4-SetupWorkitemsProperties.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ where
107107
and WORKITEM_NAME = 'testVPivot';
108108

109109
update test.sample_properties
110-
set STRING_VALUE = '[FIELD_A] AS V_A, [FIELD_B] AS V_B, FIELD_C AS V_C, FIELD_D as V_D, FIELD_E, FIELD_F, FIELD_G, FIELD_H'
110+
set STRING_VALUE = '''FIELD_A'' AS V_A, ''FIELD_B'' AS V_B, ''FIELD_C'' AS V_C, ''FIELD_D'' as V_D, ''FIELD_E'' as V_E, ''FIELD_F'' as V_F, ''FIELD_G'' as V_G, ''FIELD_H'' as V_H'
111111
where
112112
PROPERTY_NAME = 'ValueList'
113113
and WORKITEM_NAME = 'testVPivot';
Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,43 @@
11
CREATE OR REPLACE VIEW <#= ObjectView #> AS
22
SELECT
3-
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
4-
*
3+
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
4+
<#= SimpleGroupByColumns.InsertLeft() #>
5+
CASE GROUPING_ID(<#= Grouping_Columns #>)
6+
<# for (int i = 0; i < GroupingSets.Length; i++) { #>
7+
WHEN <#= GroupingSets[i].GetGroupingId(GroupingColumns) #> THEN <#= GroupingSets[i].ToString() #>
8+
<# } #>
9+
END AS <#= GroupingNameColumn #>,
10+
<#= Grouping_Columns #>,
11+
<#= AggregateExprs #>
512
FROM
613
<#= SourceView #>
14+
<#= SourceFilter.InsertRight("WHERE\r\n ") #>
15+
GROUP BY
16+
<#= SimpleGroupByColumns.InsertLeft() #>
17+
GROUPING SETS
18+
(
19+
<#= Grouping_Sets #>
20+
)
721

822
WITH READ ONLY;
23+
24+
----------------------------------------------------------------------------------------------------
25+
--
26+
-- Copyright 2013 Abel Cheng
27+
-- This source code is subject to terms and conditions of the Apache License, Version 2.0.
28+
-- See http://www.apache.org/licenses/LICENSE-2.0.
29+
-- All other rights reserved.
30+
-- You must not remove this notice, or any other, from this software.
31+
--
32+
-- Original Author: Abel Cheng <[email protected]>
33+
-- Created Date: June 14, 2013, 12:24:41 AM
34+
-- Primary Host: http://t4sql.codeplex.com
35+
-- Change Log:
36+
-- Author Date Comment
37+
--
38+
--
39+
--
40+
--
41+
-- (Keep code clean)
42+
--
43+
----------------------------------------------------------------------------------------------------

T4SQLTemplateLibrary/T4Templates/Grouping/VGroupingSets.cs

Lines changed: 112 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ public virtual string TransformText()
199199

200200
#line default
201201
#line hidden
202-
this.Write(" AS\r\nSELECT\r\n-- This code was generated by ");
202+
this.Write(" AS\r\nSELECT\r\n\t-- This code was generated by ");
203203

204204
#line 3 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
205205
this.Write(this.ToStringHelper.ToStringWithCulture(TemplateName));
@@ -213,14 +213,123 @@ public virtual string TransformText()
213213

214214
#line default
215215
#line hidden
216-
this.Write("\r\n\t*\r\nFROM\r\n\t");
216+
this.Write("\r\n\t");
217+
218+
#line 4 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
219+
this.Write(this.ToStringHelper.ToStringWithCulture(SimpleGroupByColumns.InsertLeft()));
220+
221+
#line default
222+
#line hidden
223+
this.Write("\r\n\tCASE GROUPING_ID(");
224+
225+
#line 5 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
226+
this.Write(this.ToStringHelper.ToStringWithCulture(Grouping_Columns));
227+
228+
#line default
229+
#line hidden
230+
this.Write(")\r\n");
217231

218232
#line 6 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
233+
for (int i = 0; i < GroupingSets.Length; i++) {
234+
235+
#line default
236+
#line hidden
237+
this.Write("\t\tWHEN ");
238+
239+
#line 7 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
240+
this.Write(this.ToStringHelper.ToStringWithCulture(GroupingSets[i].GetGroupingId(GroupingColumns)));
241+
242+
#line default
243+
#line hidden
244+
this.Write("\tTHEN ");
245+
246+
#line 7 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
247+
this.Write(this.ToStringHelper.ToStringWithCulture(GroupingSets[i].ToString()));
248+
249+
#line default
250+
#line hidden
251+
this.Write("\r\n");
252+
253+
#line 8 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
254+
}
255+
256+
#line default
257+
#line hidden
258+
this.Write("\tEND\t\tAS ");
259+
260+
#line 9 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
261+
this.Write(this.ToStringHelper.ToStringWithCulture(GroupingNameColumn));
262+
263+
#line default
264+
#line hidden
265+
this.Write(",\r\n\t");
266+
267+
#line 10 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
268+
this.Write(this.ToStringHelper.ToStringWithCulture(Grouping_Columns));
269+
270+
#line default
271+
#line hidden
272+
this.Write(",\r\n\t");
273+
274+
#line 11 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
275+
this.Write(this.ToStringHelper.ToStringWithCulture(AggregateExprs));
276+
277+
#line default
278+
#line hidden
279+
this.Write("\r\nFROM\r\n\t");
280+
281+
#line 13 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
219282
this.Write(this.ToStringHelper.ToStringWithCulture(SourceView));
220283

221284
#line default
222285
#line hidden
223-
this.Write("\r\n\r\nWITH READ ONLY;\r\n");
286+
this.Write("\r\n");
287+
288+
#line 14 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
289+
this.Write(this.ToStringHelper.ToStringWithCulture(SourceFilter.InsertRight("WHERE\r\n ")));
290+
291+
#line default
292+
#line hidden
293+
this.Write("\r\nGROUP BY\r\n\t");
294+
295+
#line 16 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
296+
this.Write(this.ToStringHelper.ToStringWithCulture(SimpleGroupByColumns.InsertLeft()));
297+
298+
#line default
299+
#line hidden
300+
this.Write("\r\n\tGROUPING SETS\r\n\t(\r\n\t\t");
301+
302+
#line 19 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.Oracle.sql"
303+
this.Write(this.ToStringHelper.ToStringWithCulture(Grouping_Sets));
304+
305+
#line default
306+
#line hidden
307+
this.Write(@"
308+
)
309+
310+
WITH READ ONLY;
311+
312+
----------------------------------------------------------------------------------------------------
313+
--
314+
-- Copyright 2013 Abel Cheng
315+
-- This source code is subject to terms and conditions of the Apache License, Version 2.0.
316+
-- See http://www.apache.org/licenses/LICENSE-2.0.
317+
-- All other rights reserved.
318+
-- You must not remove this notice, or any other, from this software.
319+
--
320+
-- Original Author: Abel Cheng <[email protected]>
321+
-- Created Date: June 14, 2013, 12:24:41 AM
322+
-- Primary Host: http://t4sql.codeplex.com
323+
-- Change Log:
324+
-- Author Date Comment
325+
--
326+
--
327+
--
328+
--
329+
-- (Keep code clean)
330+
--
331+
----------------------------------------------------------------------------------------------------
332+
");
224333
this.Write("\r\n");
225334

226335
#line 15 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Grouping\VGroupingSets.tt"
Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,40 @@
11
CREATE OR REPLACE VIEW <#= ObjectView #> AS
22
SELECT
3-
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
3+
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
44
*
55
FROM
6-
<#= SourceView #>
6+
(
7+
SELECT
8+
<#= SourceColumns #>
9+
FROM
10+
<#= SourceView #>
11+
<#= SourceFilter.InsertRight("WHERE\r\n ") #>
12+
) S
13+
PIVOT
14+
(
15+
<#= AggregateFunction #>
16+
FOR <#= PivotColumn #> IN (<#= Value_List #>)
17+
) P
718

819
WITH READ ONLY;
20+
21+
----------------------------------------------------------------------------------------------------
22+
--
23+
-- Copyright 2013 Abel Cheng
24+
-- This source code is subject to terms and conditions of the Apache License, Version 2.0.
25+
-- See http://www.apache.org/licenses/LICENSE-2.0.
26+
-- All other rights reserved.
27+
-- You must not remove this notice, or any other, from this software.
28+
--
29+
-- Original Author: Abel Cheng <[email protected]>
30+
-- Created Date: June 02, 2013, 11:06:09 AM
31+
-- Primary Host: http://t4sql.codeplex.com
32+
-- Change Log:
33+
-- Author Date Comment
34+
--
35+
--
36+
--
37+
--
38+
-- (Keep code clean)
39+
--
40+
----------------------------------------------------------------------------------------------------

T4SQLTemplateLibrary/T4Templates/Pivot/VPivot.cs

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public virtual string TransformText()
157157

158158
#line default
159159
#line hidden
160-
this.Write(" AS\r\nSELECT\r\n-- This code was generated by ");
160+
this.Write(" AS\r\nSELECT\r\n\t-- This code was generated by ");
161161

162162
#line 3 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.Oracle.sql"
163163
this.Write(this.ToStringHelper.ToStringWithCulture(TemplateName));
@@ -171,14 +171,74 @@ public virtual string TransformText()
171171

172172
#line default
173173
#line hidden
174-
this.Write("\r\n\t*\r\nFROM\r\n\t");
174+
this.Write("\r\n\t*\r\nFROM\r\n(\r\n\tSELECT\r\n\t\t");
175175

176-
#line 6 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.Oracle.sql"
176+
#line 8 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.Oracle.sql"
177+
this.Write(this.ToStringHelper.ToStringWithCulture(SourceColumns));
178+
179+
#line default
180+
#line hidden
181+
this.Write("\r\n\tFROM\r\n\t\t");
182+
183+
#line 10 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.Oracle.sql"
177184
this.Write(this.ToStringHelper.ToStringWithCulture(SourceView));
178185

179186
#line default
180187
#line hidden
181-
this.Write("\r\n\r\nWITH READ ONLY;\r\n");
188+
this.Write("\r\n\t");
189+
190+
#line 11 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.Oracle.sql"
191+
this.Write(this.ToStringHelper.ToStringWithCulture(SourceFilter.InsertRight("WHERE\r\n ")));
192+
193+
#line default
194+
#line hidden
195+
this.Write("\r\n)\tS\r\nPIVOT\r\n(\r\n\t");
196+
197+
#line 15 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.Oracle.sql"
198+
this.Write(this.ToStringHelper.ToStringWithCulture(AggregateFunction));
199+
200+
#line default
201+
#line hidden
202+
this.Write("\r\n\tFOR ");
203+
204+
#line 16 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.Oracle.sql"
205+
this.Write(this.ToStringHelper.ToStringWithCulture(PivotColumn));
206+
207+
#line default
208+
#line hidden
209+
this.Write(" IN (");
210+
211+
#line 16 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.Oracle.sql"
212+
this.Write(this.ToStringHelper.ToStringWithCulture(Value_List));
213+
214+
#line default
215+
#line hidden
216+
this.Write(@")
217+
) P
218+
219+
WITH READ ONLY;
220+
221+
----------------------------------------------------------------------------------------------------
222+
--
223+
-- Copyright 2013 Abel Cheng
224+
-- This source code is subject to terms and conditions of the Apache License, Version 2.0.
225+
-- See http://www.apache.org/licenses/LICENSE-2.0.
226+
-- All other rights reserved.
227+
-- You must not remove this notice, or any other, from this software.
228+
--
229+
-- Original Author: Abel Cheng <[email protected]>
230+
-- Created Date: June 02, 2013, 11:06:09 AM
231+
-- Primary Host: http://t4sql.codeplex.com
232+
-- Change Log:
233+
-- Author Date Comment
234+
--
235+
--
236+
--
237+
--
238+
-- (Keep code clean)
239+
--
240+
----------------------------------------------------------------------------------------------------
241+
");
182242
this.Write("\r\n");
183243

184244
#line 15 "E:\Projects\T4SQL\T4SQLTemplateLibrary\T4Templates\Pivot\VPivot.tt"

T4SQLTemplateLibrary/T4Templates/Pivot/VPivot.partial.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public string SelectColumns
5353
{
5454
get
5555
{
56-
return Context.DbServerEnv.ListTableColumns(SourceView, this.GetPropertyValue("NonPivotedColumns"))
56+
return (DbmsPlatform == "Oracle") ? "*" :
57+
Context.DbServerEnv.ListTableColumns(SourceView, this.GetPropertyValue("NonPivotedColumns"))
5758
.ExceptColumns(new string[] { ValueColumn, PivotColumn }).InsertLeft() + Value_List;
5859
}
5960
}
Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,36 @@
11
CREATE OR REPLACE VIEW <#= ObjectView #> AS
22
SELECT
3-
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
4-
*
3+
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
4+
<#= SelectColumns #>
55
FROM
66
<#= SourceView #>
7+
UNPIVOT
8+
(
9+
<#= ValueColumn #> FOR <#= PivotColumn #> IN
10+
(
11+
<#= UnpivotInColumns #>
12+
)
13+
) U
714

815
WITH READ ONLY;
16+
17+
----------------------------------------------------------------------------------------------------
18+
--
19+
-- Copyright 2013 Abel Cheng
20+
-- This source code is subject to terms and conditions of the Apache License, Version 2.0.
21+
-- See http://www.apache.org/licenses/LICENSE-2.0.
22+
-- All other rights reserved.
23+
-- You must not remove this notice, or any other, from this software.
24+
--
25+
-- Original Author: Abel Cheng <[email protected]>
26+
-- Created Date: June 02, 2013, 11:06:37 AM
27+
-- Primary Host: http://t4sql.codeplex.com
28+
-- Change Log:
29+
-- Author Date Comment
30+
--
31+
--
32+
--
33+
--
34+
-- (Keep code clean)
35+
--
36+
----------------------------------------------------------------------------------------------------

0 commit comments

Comments
 (0)