Skip to content

Commit c3ff61c

Browse files
committed
Prepare for VFullPivot.tt
1 parent 168589b commit c3ff61c

File tree

9 files changed

+1207
-9
lines changed

9 files changed

+1207
-9
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ set STRING_VALUE = 'value_'
140140
where PROPERTY_NAME = 'ValueColumn'
141141
and WORKITEM_NAME = 'testVUnpivot';
142142

143+
update test.sample_properties
144+
set STRING_VALUE = 'V_A as ''FIELD_A'', V_B as ''FIELD_B'', V_C as ''FIELD_C'', V_D, V_E, V_F, V_G, V_H'
145+
where PROPERTY_NAME = 'UnpivotColumns'
146+
and WORKITEM_NAME = 'testVUnpivot';
143147

144148
-- testVGroupingSets
145149
update test.sample_properties
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
CREATE OR REPLACE VIEW <#= ObjectView #> AS
2+
WITH
3+
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
4+
CTE_MAIN AS
5+
(
6+
SELECT
7+
<#= Junction_Columns #>,
8+
<#= PivotColumn #>,
9+
<#= MeasureColumn #>
10+
FROM
11+
<#= SourceView #>
12+
WHERE
13+
<#= PivotColumn #> IN (<#= Value_List #>)
14+
<#= SourceFilter.InsertRight("AND ") #>
15+
),
16+
JOIN_ON AS
17+
(
18+
SELECT DISTINCT
19+
<#= Junction_Columns #>
20+
FROM
21+
CTE_MAIN
22+
)
23+
<#
24+
for (int i = 0; i < Value_Aliases.Length; i++)
25+
{
26+
#>
27+
,
28+
CTE_<#= i #> AS
29+
(
30+
SELECT
31+
<#= Junction_Columns #>,
32+
<#= MeasureColumn #>
33+
FROM
34+
CTE_MAIN
35+
WHERE
36+
<#= PivotColumn #> = <#= Value_Aliases[i].Item1 #>
37+
)
38+
<#
39+
}
40+
#>
41+
SELECT
42+
J.<#= Junction_Columns #>
43+
<#
44+
for (int i = 0; i < Value_Aliases.Length; i++)
45+
{
46+
#>
47+
, C<#= i #>.<#= MeasureColumn #> AS <#= Value_Aliases[i].Item2 #>
48+
<#
49+
}
50+
#>
51+
FROM
52+
JOIN_ON J
53+
<#
54+
for (int i = 0; i < Value_Aliases.Length; i++)
55+
{
56+
#>
57+
LEFT JOIN
58+
CTE_<#= i #> C<#= i #>
59+
ON
60+
(<#= string.Join(" AND ", JunctionColumns.Select(c => string.Format("J.{0} = C{1}.{0}", c, i))) #>)
61+
<#
62+
}
63+
#>
64+
WITH READ ONLY;
65+
66+
----------------------------------------------------------------------------------------------------
67+
--
68+
-- Copyright 2013 Abel Cheng
69+
-- This source code is subject to terms and conditions of the Apache License, Version 2.0.
70+
-- See http://www.apache.org/licenses/LICENSE-2.0.
71+
-- All other rights reserved.
72+
-- You must not remove this notice, or any other, from this software.
73+
--
74+
-- Original Author: Abel Cheng <[email protected]>
75+
-- Created Date: November 26, 2013, 10:06:19 PM
76+
-- Primary Host: http://t4sql.codeplex.com
77+
-- Change Log:
78+
-- Author Date Comment
79+
--
80+
--
81+
--
82+
--
83+
-- (Keep code clean)
84+
--
85+
----------------------------------------------------------------------------------------------------
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
IF OBJECT_ID(N'<#= ObjectView #>', N'V') IS NULL
2+
EXECUTE ('CREATE VIEW <#= ObjectView #> AS SELECT NULL AS CREATE_OR_REPLACE');
3+
GO
4+
5+
ALTER VIEW <#= ObjectView #> AS
6+
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
7+
WITH
8+
-- This code was generated by <#= TemplateName #> @ <#= DateTime.Now.ToString() #>
9+
CTE_MAIN AS
10+
(
11+
SELECT
12+
<#= Junction_Columns #>,
13+
<#= PivotColumn #>,
14+
<#= MeasureColumn #>
15+
FROM
16+
<#= SourceView #>
17+
WHERE
18+
<#= PivotColumn #> IN (<#= Value_List #>)
19+
<#= SourceFilter.InsertRight("AND ") #>
20+
),
21+
JOIN_ON AS
22+
(
23+
SELECT DISTINCT
24+
<#= Junction_Columns #>
25+
FROM
26+
CTE_MAIN
27+
)
28+
<#
29+
for (int i = 0; i < Value_Aliases.Length; i++)
30+
{
31+
#>
32+
,
33+
CTE_<#= i #> AS
34+
(
35+
SELECT
36+
<#= Junction_Columns #>,
37+
<#= MeasureColumn #>
38+
FROM
39+
CTE_MAIN
40+
WHERE
41+
<#= PivotColumn #> = <#= Value_Aliases[i].Item1 #>
42+
)
43+
<#
44+
}
45+
#>
46+
SELECT
47+
J.<#= Junction_Columns #>
48+
<#
49+
for (int i = 0; i < Value_Aliases.Length; i++)
50+
{
51+
#>
52+
, C<#= i #>.<#= MeasureColumn #> AS <#= Value_Aliases[i].Item2 #>
53+
<#
54+
}
55+
#>
56+
FROM
57+
JOIN_ON J
58+
<#
59+
for (int i = 0; i < Value_Aliases.Length; i++)
60+
{
61+
#>
62+
LEFT JOIN
63+
CTE_<#= i #> C<#= i #>
64+
ON
65+
(<#= string.Join(" AND ", JunctionColumns.Select(c => string.Format("J.{0} = C{1}.{0}", c, i))) #>)
66+
<#
67+
}
68+
#>
69+
;
70+
GO
71+
72+
----------------------------------------------------------------------------------------------------
73+
--
74+
-- Copyright 2013 Abel Cheng
75+
-- This source code is subject to terms and conditions of the Apache License, Version 2.0.
76+
-- See http://www.apache.org/licenses/LICENSE-2.0.
77+
-- All other rights reserved.
78+
-- You must not remove this notice, or any other, from this software.
79+
--
80+
-- Original Author: Abel Cheng <[email protected]>
81+
-- Created Date: November 26, 2013, 10:06:19 PM
82+
-- Primary Host: http://t4sql.codeplex.com
83+
-- Change Log:
84+
-- Author Date Comment
85+
--
86+
--
87+
--
88+
--
89+
-- (Keep code clean)
90+
--
91+
----------------------------------------------------------------------------------------------------

0 commit comments

Comments
 (0)