Wspomina o tym Bill Karwin, ale myślę, że zasługuje na to, aby to wyraźnie podkreślić:
SQL nie robi tego, o co prosisz, więc każde „rozwiązanie”, jakie otrzymasz, będzie utrudnieniem.
Jeśli wiesz , na pewno zawsze będzie działać na Oracle 10, to z pewnością może to zrobić tabela krzyżowa Waltera Mitty'ego. Właściwym sposobem, aby to zrobić, jest najłatwiejsza kombinacja kolejności sortowania w zapytaniu i kodzie aplikacji, aby ułożyć to we właściwy sposób.
- Działa na innych systemach baz danych,
- nie ma ryzyka zepsucia innych warstw (pamiętam, że MySQL ma problem na przykład z>255 kolumnami. Czy na pewno masz bibliotekę interfejsu radzi sobie równie dobrze jak sama baza danych?)
- to (zwykle) nie jest dużo trudniejsze.
Jeśli potrzebujesz, możesz po prostu poprosić o Content_Row_ID
s, a następnie poproś o potrzebne wiersze, uporządkowane według CampaignID
, ContentRowID
, co dałoby każdą (wypełnioną) komórkę w kolejności od lewej do prawej, wiersz po wierszu.
Ps.
Jest wiele rzeczy, które współczesny człowiek uważa, że SQL powinien mieć/zrobić, a których po prostu nie ma. To jedno, generowane zakresy to drugie, rekurencyjne zamknięcie, parametryczne ORDER BY
, ustandaryzowany język programowania... lista jest długa. (chociaż trzeba przyznać, że jest sztuczka dla ORDER BY
)