Snabb kommentar om loopen.
Varför behöver du gå igenom 4 gånger? Det borde räcka med en gång.
Du loopar igenom raderna, sedan kolumnerna. För varje kolumen kollar du sedan alla dina räknare. Om en räknare baseras på två kolumner sätter du en flagga. När räknarens alla kolumner är kontrollerade och flaggan är true så ökas räknaren på.
Efter att ha loopat en gång så ska du ha alla räknare uppdaterade.
Med select så ställer du en vanlig SQL-fråga. Då får du göra en select för varje räknare.
Är inte säker på vad som är mest prestandakrävande men du kan ju prova.
Beroende på hur mycket innehåll du har så får man välja lösningen.
Är det många rader så kanske loopen är fel val.
Är det väldigt många rader så kanske det är bättre att göra en SQL-fråga mot databasen som gör uträkningen istället för att göra det i koden.

