Хорошо, я думаю, что вы идете по правильному пути. Немного сложно понять группы правильно, но это можно решить с помощью группировки.
То, что вам нужно, это матрица (таблица, в которой вы можете иметь динамические строки и столбцы) и поместить даты в группу сверху. Затем сгруппируйте строки по имени сайта, а затем (я думаю) по ключевому слову.
Если группировка по ключевому слову не работает, попробуйте вместо этого группировать по номеру строки (в рамках группы имен сайтов)? Если это не сработает, попробуйте заставить вашу базу данных сначала создать дополнительный столбец с рангом. Тогда вы можете определенно группировать по этому. Я имею в виду:
site_name,date,keyword,visits,rank
site1.com,2010-04,apples,100,1
site1.com,2010-04,oranges,99,2
site1.com,2010-05,wine,12,1
site1.com,2010-05,water,10,2
site2.com,2010-04,cornbread,100,1
site2.com,2010-04,biscuits,99,2
site2.com,2010-05,blueberry,90,1
site2.com,2010-05,squares,80,2
После этого вы сможете добавить две строки в эту группу, чтобы поместить ключевое слово и посещения. Если вы не можете, вам, возможно, придется прибегнуть к причудливой работе с прямоугольником - в ячейке сведений поместите прямоугольник, а затем два текстовые поля с ключевым словом в верхнем и количеством посещений в нижнем.