Para Drupal 6 podrías hacer algo como esto:
$header = array(
array('data' => t('Order id'), 'field' => 'order_id'),
...
array('data' => t('Transaction time'), 'field' => 'payment_time', 'sort' => 'desc'),
);
$sql = "...";
$sql .= tablesort_sql($header);
$limit = 25;
$result = pager_query($sql, $limit);
...
Eché un vistazo y para drupal 7 y ambos pager_queryy tablesort_sqlahora se ha ido. Parece que, en cambio, la PagerDefaultclase se puede usar para crear una consulta de buscapersonas usando DBTNG. No pude encontrar ninguna pista en una API simple para adjuntar una tabla ordenable a la consulta como se hace en Drupal 6.
Entonces, ¿cómo se crea una tabla ordenable con un buscapersonas que extraiga datos de una tabla personalizada?