Bill Karwin menciona isso, mas acho que isso merece ser apontado com muita clareza:
O SQL não faz o que você está pedindo, então qualquer "solução" que você obtiver será um kludge.
Se você sabe , com certeza, ele sempre será executado em um Oracle 10, então com certeza, a tabulação cruzada de Walter Mitty pode fazê-lo. A maneira correta de fazer isso é trabalhar a combinação mais fácil de ordem de classificação na consulta e no código do aplicativo para defini-lo corretamente.
- Funciona em outros sistemas de banco de dados,
- não há risco de nenhuma outra camada se degradar (lembro que o MySQL teve um problema com>255 colunas, por exemplo. Tem certeza de que biblioteca de interface lida bem como o próprio banco de dados?)
- não é (geralmente) muito mais difícil.
Se precisar, basta pedir o
Content_Row_ID
s primeiro e, em seguida, peça as linhas necessárias, ordenadas por CampaignID
, ContentRowID
, que forneceria cada célula (preenchida) na ordem da esquerda para a direita, linha por linha. Ps.
Há um monte de coisas que o homem moderno acha que o SQL deveria ter/fazer que simplesmente não existe. Este é um, intervalos gerados é outro, fechamento recursivo, paramétrico
ORDER BY
, linguagem de programação padronizada... a lista continua. (embora, admitamos, haja um truque para ORDER BY
)