Skip to content

Commit eb480d7

Browse files
committed
pivot for subquery corrected
1 parent d4f744c commit eb480d7

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

src/main/java/net/sf/jsqlparser/statement/select/SubSelect.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ public void accept(ItemsListVisitor itemsListVisitor) {
8282

8383
@Override
8484
public String toString() {
85-
return "(" + selectBody + ")" + ((alias != null) ? alias.toString() : "");
85+
return "(" + selectBody + ")"
86+
+ ((pivot != null) ? " " + pivot : "")
87+
+ ((alias != null) ? alias.toString() : "");
8688
}
8789
}

src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,10 @@ public void visit(SubSelect subSelect) {
164164
buffer.append("(");
165165
subSelect.getSelectBody().accept(this);
166166
buffer.append(")");
167+
Pivot pivot = subSelect.getPivot();
168+
if (pivot != null) {
169+
pivot.accept(this);
170+
}
167171
Alias alias = subSelect.getAlias();
168172
if (alias != null) {
169173
buffer.append(alias.toString());

src/test/java/net/sf/jsqlparser/test/select/SelectTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1311,6 +1311,10 @@ public void testPivotXml3() throws JSQLParserException {
13111311
String stmt = "SELECT * FROM mytable PIVOT XML (count(a) FOR b IN (ANY))";
13121312
assertSqlCanBeParsedAndDeparsed(stmt);
13131313
}
1314+
1315+
public void testPivotXmlSubquery1() throws JSQLParserException {
1316+
assertSqlCanBeParsedAndDeparsed("SELECT * FROM (SELECT times_purchased, state_code FROM customers t) PIVOT (count(state_code) FOR state_code IN ('NY', 'CT', 'NJ', 'FL', 'MO')) ORDER BY times_purchased");
1317+
}
13141318

13151319
public void testRegexpLike1() throws JSQLParserException {
13161320
String stmt = "SELECT * FROM mytable WHERE REGEXP_LIKE(first_name, '^Ste(v|ph)en$')";

0 commit comments

Comments
 (0)