def to_sql(self, schema, not_null=False, boolean=False): acc = {"b": [], "s": [], "n": []} for term in self.terms: for t, v in SQLang[term].to_sql(schema)[0].sql.items(): acc[t].append(v) output = {} for t, terms in acc.items(): if not terms: continue elif len(terms) == 1: output[t] = terms[0] else: output[t] = sql_coalesce(terms) return wrap([{"name": ".", "sql": output}])
def to_sql(self, schema, not_null=False, boolean=False): value = SQLang[self.term].to_sql(schema, not_null=True) acc = [] for c in value: for t, v in c.sql.items(): if t == "s": acc.append("CAST(" + v + " as FLOAT)") else: acc.append(v) if not acc: return wrap([]) elif len(acc) == 1: return wrap([{"name": ".", "sql": {"n": acc[0]}}]) else: return wrap([{"name": ".", "sql": {"n": sql_coalesce(acc)}}])
def to_sql(self, schema, not_null=False, boolean=False): test = self.term.missing().to_sql(schema, boolean=True)[0].sql.b value = self.term.to_sql(schema, not_null=True)[0].sql acc = [] for t, v in value.items(): if t == "b": acc.append(SQL_CASE+SQL_WHEN + sql_iso(test) + SQL_THEN + SQL_NULL + SQL_WHEN + sql_iso(v) + SQL_THEN+"'true'"+SQL_ELSE+"'false'"+SQL_END) elif t == "s": acc.append(v) else: acc.append("RTRIM(RTRIM(CAST" + sql_iso(v + " as TEXT), " + quote_value('0')) + ", " + quote_value(".") + ")") if not acc: return wrap([{}]) elif len(acc) == 1: return wrap([{"name": ".", "sql": {"s": acc[0]}}]) else: return wrap([{"name": ".", "sql": {"s": sql_coalesce(acc)}}])
def to_sql(self, schema, not_null=False, boolean=False): lhs = self.lhs.to_sql(schema)[0].sql.n rhs = self.rhs.to_sql(schema)[0].sql.n d = self.default.to_sql(schema)[0].sql.n if lhs and rhs: if d == None: return wrap([{ "name": ".", "sql": {"n": sql_iso(lhs) + " / " + sql_iso(rhs)} }]) else: return wrap([{ "name": ".", "sql": {"n": sql_coalesce([sql_iso(lhs) + " / " + sql_iso(rhs), d])} }]) else: return Null
index_to_column[column_number] = ColumnMapping( push_name=s.name, push_column_name=s.name, push_column=si, push_child=name, pull=get_column(column_number), sql=full_sql, column_alias=_make_column_name(column_number), type="number") else: # STANDARD AGGREGATES for details in s.value.partial_eval().to_sql(schema): for sql_type, sql in details.sql.items(): column_number = len(outer_selects) sql = sql_aggs[s.aggregate] + sql_iso(sql) if s.default != None: sql = sql_coalesce([sql, quote_value(s.default)]) outer_selects.append( sql_alias(sql, _make_column_name(column_number))) index_to_column[column_number] = ColumnMapping( push_name=s.name, push_column_name=s.name, push_column=si, push_child= ".", # join_field(split_field(details.name)[1::]), pull=get_column(column_number), sql=sql, column_alias=_make_column_name(column_number), type=sql_type_to_json_type[sql_type]) for w in query.window: outer_selects.append(self._window_op(self, query, w))