pub struct Pivot {
pub this: Expression,
pub expressions: Vec<Expression>,
pub fields: Vec<Expression>,
pub using: Vec<Expression>,
pub group: Option<Box<Expression>>,
pub unpivot: bool,
pub into: Option<Box<Expression>>,
pub alias: Option<Identifier>,
pub include_nulls: Option<bool>,
pub default_on_null: Option<Box<Expression>>,
pub with: Option<With>,
}Expand description
PIVOT operation - supports both standard and DuckDB simplified syntax
Standard syntax (in FROM clause): table PIVOT(agg_func [AS alias], … FOR column IN (value [AS alias], …)) table UNPIVOT(value_col FOR name_col IN (col1, col2, …))
DuckDB simplified syntax (statement-level): PIVOT table ON columns [IN (…)] USING agg_func [AS alias], … [GROUP BY …] UNPIVOT table ON columns INTO NAME name_col VALUE val_col
Fields§
§this: ExpressionSource table/expression
expressions: Vec<Expression>For standard PIVOT: the aggregation function(s) (first is primary)
For DuckDB simplified: unused (use using instead)
fields: Vec<Expression>For standard PIVOT: the FOR…IN clause(s) as In expressions
using: Vec<Expression>For standard: unused. For DuckDB simplified: the USING aggregation functions
group: Option<Box<Expression>>GROUP BY clause (used in both standard inside-parens and DuckDB simplified)
unpivot: boolWhether this is an UNPIVOT (vs PIVOT)
into: Option<Box<Expression>>For DuckDB UNPIVOT: INTO NAME col VALUE col
alias: Option<Identifier>Optional alias
include_nulls: Option<bool>Include/exclude nulls (for UNPIVOT)
default_on_null: Option<Box<Expression>>Default on null value (Snowflake)
with: Option<With>WITH clause (CTEs)