void FunctionColumn::setDerivedTable()
{
    if (hasAggregate())
    {
        fDerivedTable = "";
        return;
    }

    setSimpleColumnList();
    string derivedTableAlias = "";

    for (uint32_t i = 0; i < fSimpleColumnList.size(); i++)
    {
        SimpleColumn* sc = fSimpleColumnList[i];
        sc->setDerivedTable();

        if (sc->derivedTable() != derivedTableAlias)
        {
            if (derivedTableAlias == "")
            {
                derivedTableAlias = sc->tableName();
            }
            else
            {
                derivedTableAlias = "";
                break;
            }
        }
    }

    fDerivedTable = derivedTableAlias;
}