diff --git includes/views/handlers/content_handler_field.inc includes/views/handlers/content_handler_field.inc
index 3aa0df0..eac0fb4 100644
--- includes/views/handlers/content_handler_field.inc
+++ includes/views/handlers/content_handler_field.inc
@@ -21,14 +21,25 @@ class content_handler_field extends views_handler_field_node {
   function init(&$view, $options) {
     $field = $this->content_field;
     parent::init($view, $options);
-    if ($field['multiple']) {
-      $this->additional_fields['delta'] = 'delta';
-    }
+
     // Make sure we grab enough information to build a pseudo-node with enough
     // credentials at render-time.
-    $this->additional_fields['type'] = array('table' => 'node', 'field' => 'type');
-    $this->additional_fields['nid'] = array('table' => 'node', 'field' => 'nid');
-    $this->additional_fields['vid'] = array('table' => 'node', 'field' => 'vid');
+    if (method_exists($this->view->display_handler, 'use_group_by') && $this->view->display_handler->use_group_by()) {
+      if ($this->view->base_table == 'node_revisions') {
+        $this->additional_fields['vid'] = array('table' => 'node', 'field' => 'vid', 'params' => array('function' => 'max'));
+      }
+      else {
+        $this->additional_fields['nid'] = array('table' => 'node', 'field' => 'nid', 'params' => array('function' => 'max'));
+      }
+    }
+    else {
+      if ($field['multiple']) {
+        $this->additional_fields['delta'] = 'delta';
+      }
+      $this->additional_fields['type'] = array('table' => 'node', 'field' => 'type');
+      $this->additional_fields['nid'] = array('table' => 'node', 'field' => 'nid');
+      $this->additional_fields['vid'] = array('table' => 'node', 'field' => 'vid');
+    }
   }
 
   function option_definition() {
@@ -36,6 +47,9 @@ class content_handler_field extends views_handler_field_node {
     $field = $this->content_field;
 
     // Override views_handler_field_node's default label
+    if (method_exists($this->view->display_handler, 'use_group_by') && $this->view->display_handler->use_group_by() && $this->view->base_table == 'node_revisions') {
+      $options['link_to_node']['default'] = FALSE;
+    }
     $options['label'] = array('default' => '', 'translatable' => TRUE);
     $options['label_type'] = array('default' => 'widget');
     $options['format'] = array('default' => 'default');
@@ -54,6 +68,10 @@ class content_handler_field extends views_handler_field_node {
     $field = $this->content_field;
     $options = $this->options;
 
+    if (method_exists($this->view->display_handler, 'use_group_by') && $this->view->display_handler->use_group_by() && $this->view->base_table == 'node_revisions') {
+      $form['link_to_node']['#description'] .= ' <strong>' . t('This will cause grouping on node id:s as well.') . '</strong>';
+    }
+
     $form['label_type'] = array(
       '#title' => t('Label'),
       '#type' => 'radios',
@@ -169,20 +187,30 @@ class content_handler_field extends views_handler_field_node {
   }
 
   function render($values) {
+    if (isset($this->aliases['type'])) {
+      // Build a pseudo-node from the retrieved values.
+      $node = drupal_clone($values);
+      $node->type = $values->{$this->aliases['type']};
+      $node->nid = $values->{$this->aliases['nid']};
+      $node->vid = $values->{$this->aliases['vid']};
+      // Some formatters need to behave differently depending on the build_mode
+      // (for instance: preview), so we provide one.
+      $node->build_mode = NODE_BUILD_NORMAL;
+    }
+    elseif (isset($this->aliases['vid'])) {
+      $node = node_load(array('vid' => $values->{$this->aliases['vid']}));
+    }
+    else {
+      $node = node_load($values->{$this->aliases['nid']});
+    }
+
+    $field = content_fields($this->content_field['field_name'], $node->type);
+
     // We're down to a single node here, so we can retrieve the actual field
     // definition for the node type being considered.
-    $field = content_fields($this->content_field['field_name'], $values->{$this->aliases['type']});
     $options = $this->options;
     $db_info = content_database_info($field);
 
-    // Build a pseudo-node from the retrieved values.
-    $node = drupal_clone($values);
-    $node->type = $values->{$this->aliases['type']};
-    $node->nid = $values->{$this->aliases['nid']};
-    $node->vid = $values->{$this->aliases['vid']};
-    // Some formatters need to behave differently depending on the build_mode
-    // (for instance: preview), so we provide one.
-    $node->build_mode = NODE_BUILD_NORMAL;
 
     $item = array();
     foreach ($db_info['columns'] as $column => $attributes) {
@@ -195,7 +223,7 @@ class content_handler_field extends views_handler_field_node {
       $item[$column] = $values->{$alias};
     }
 
-    $item['#delta'] = $field['multiple'] ?  $values->{$this->aliases['delta']} : 0;
+    $item['#delta'] = ($field['multiple'] && isset($this->aliases['delta'])) ?  $values->{$this->aliases['delta']} : 0;
 
     // Render items.
     $formatter_name = $options['format'];
diff --git includes/views/handlers/content_handler_field_multiple.inc includes/views/handlers/content_handler_field_multiple.inc
index 896a85d..fc364fd 100644
--- includes/views/handlers/content_handler_field_multiple.inc
+++ includes/views/handlers/content_handler_field_multiple.inc
@@ -15,7 +15,12 @@ class content_handler_field_multiple extends content_handler_field {
     $field = $this->content_field;
     parent::init($view, $options);
 
-    $this->defer_query = !empty($options['multiple']['group']) && $field['multiple'];
+    if (method_exists($this->view->display_handler, 'use_group_by') && $this->view->display_handler->use_group_by()) {
+      $this->defer_query = FALSE;
+    }
+    else {
+      $this->defer_query = !empty($options['multiple']['group']) && $field['multiple'];
+    }
 
     if ($this->defer_query) {
       // Grouped field: ditch the existing additional_fields (field columns + delta).
@@ -64,45 +69,54 @@ class content_handler_field_multiple extends content_handler_field {
       '#access' => $field['multiple'],
       '#weight' => 1,
     );
-    $form['multiple']['group'] = array(
-      '#title' => t('Group multiple values'),
-      '#type' => 'checkbox',
-      '#default_value' => $options['multiple']['group'],
-      '#description' => t('If unchecked, each item in the field will create a new row, which may appear to cause duplicates. This setting is not compatible with click-sorting in table displays.'),
-    );
-    // Make the string translatable by keeping it as a whole rather than
-    // translating prefix and suffix separately.
-    list($prefix, $suffix) = explode('@count', t('Show @count value(s)'));
-    $form['multiple']['multiple_number'] = array(
-      '#type' => 'textfield',
-      '#size' => 5,
-      '#field_prefix' => $prefix,
-      '#field_suffix' => $suffix,
-      '#default_value' => $options['multiple']['multiple_number'],
-      '#prefix' => '<div class="container-inline">',
-      '#process' => array('views_process_dependency'),
-      '#dependency' => array('edit-options-multiple-group' => array(TRUE)),
-    );
-    list($prefix, $suffix) = explode('@count', t('starting from @count'));
-    $form['multiple']['multiple_from'] = array(
-      '#type' => 'textfield',
-      '#size' => 5,
-      '#field_prefix' => $prefix,
-      '#field_suffix' => $suffix,
-      '#default_value' => $options['multiple']['multiple_from'],
-      '#process' => array('views_process_dependency'),
-      '#dependency' => array('edit-options-multiple-group' => array(TRUE)),
-      '#description' => t('(first item is 0)'),
-    );
-    $form['multiple']['multiple_reversed'] = array(
-      '#title' => t('Reversed'),
-      '#type' => 'checkbox',
-      '#default_value' => $options['multiple']['multiple_reversed'],
-      '#suffix' => '</div>',
-      '#process' => array('views_process_dependency'),
-      '#dependency' => array('edit-options-multiple-group' => array(TRUE)),
-      '#description' => t('(start from last values)'),
-    );
+
+    if (!method_exists($this->view->display_handler, 'use_group_by') || !$this->view->display_handler->use_group_by()) {
+      $form['multiple']['group'] = array(
+        '#title' => t('Group multiple values'),
+        '#type' => 'checkbox',
+        '#default_value' => $options['multiple']['group'],
+        '#description' => t('If unchecked, each item in the field will create a new row, which may appear to cause duplicates. This setting is not compatible with click-sorting in table displays.'),
+      );
+      // Make the string translatable by keeping it as a whole rather than
+      // translating prefix and suffix separately.
+      list($prefix, $suffix) = explode('@count', t('Show @count value(s)'));
+      $form['multiple']['multiple_number'] = array(
+        '#type' => 'textfield',
+        '#size' => 5,
+        '#field_prefix' => $prefix,
+        '#field_suffix' => $suffix,
+        '#default_value' => $options['multiple']['multiple_number'],
+        '#prefix' => '<div class="container-inline">',
+        '#process' => array('views_process_dependency'),
+        '#dependency' => array('edit-options-multiple-group' => array(TRUE)),
+      );
+      list($prefix, $suffix) = explode('@count', t('starting from @count'));
+      $form['multiple']['multiple_from'] = array(
+        '#type' => 'textfield',
+        '#size' => 5,
+        '#field_prefix' => $prefix,
+        '#field_suffix' => $suffix,
+        '#default_value' => $options['multiple']['multiple_from'],
+        '#process' => array('views_process_dependency'),
+        '#dependency' => array('edit-options-multiple-group' => array(TRUE)),
+        '#description' => t('(first item is 0)'),
+      );
+      $form['multiple']['multiple_reversed'] = array(
+        '#title' => t('Reversed'),
+        '#type' => 'checkbox',
+        '#default_value' => $options['multiple']['multiple_reversed'],
+        '#suffix' => '</div>',
+        '#process' => array('views_process_dependency'),
+        '#dependency' => array('edit-options-multiple-group' => array(TRUE)),
+        '#description' => t('(start from last values)'),
+      );
+    }
+    else {
+      $form['multiple']['group'] = array(
+        '#type' => 'value',
+        '#value' => FALSE,
+      );
+    }
   }
 
   /**
