diff --git a/core/Plugin/Visualization.php b/core/Plugin/Visualization.php
index 1c5a7a3bd84246404111796f0bfab91d2fa98139..e369dfa05a5eb9121107801a3056c0981262e651 100644
--- a/core/Plugin/Visualization.php
+++ b/core/Plugin/Visualization.php
@@ -286,7 +286,7 @@ class Visualization extends ViewDataTable
         }
 
         if (empty($this->requestConfig->filter_sort_column)) {
-            $this->requestConfig->setDefaultSort($this->config->columns_to_display, $hasNbUniqVisitors);
+            $this->requestConfig->setDefaultSort($this->config->columns_to_display, $hasNbUniqVisitors, $columns);
         }
 
         // deal w/ table metadata
@@ -312,7 +312,7 @@ class Visualization extends ViewDataTable
 
         if (!in_array($this->requestConfig->filter_sort_column, $this->config->columns_to_display)) {
             $hasNbUniqVisitors = in_array('nb_uniq_visitors', $this->config->columns_to_display);
-            $this->requestConfig->setDefaultSort($this->config->columns_to_display, $hasNbUniqVisitors);
+            $this->requestConfig->setDefaultSort($this->config->columns_to_display, $hasNbUniqVisitors, $this->dataTable->getColumns());
         }
 
         if (!$this->requestConfig->areGenericFiltersDisabled()) {
diff --git a/core/ViewDataTable/RequestConfig.php b/core/ViewDataTable/RequestConfig.php
index 102fa6801855c1953c47ddaf9ca448b92359f897..5ea6b623f4fa9bdd9cd5a3a70a08a90355b98d7d 100644
--- a/core/ViewDataTable/RequestConfig.php
+++ b/core/ViewDataTable/RequestConfig.php
@@ -292,7 +292,7 @@ class RequestConfig
         }
     }
 
-    public function setDefaultSort($columnsToDisplay, $hasNbUniqVisitors)
+    public function setDefaultSort($columnsToDisplay, $hasNbUniqVisitors, $actualColumns)
     {
         // default sort order to visits/visitors data
         if ($hasNbUniqVisitors && in_array('nb_uniq_visitors', $columnsToDisplay)) {
@@ -301,6 +301,16 @@ class RequestConfig
             $this->filter_sort_column = 'nb_visits';
         }
 
+        // if the default sort column does not exist, sort by the first non-label column
+        if (!in_array($this->filter_sort_column, $actualColumns)) {
+            foreach ($actualColumns as $column) {
+                if ($column != 'label') {
+                    $this->filter_sort_column = $column;
+                    break;
+                }
+            }
+        }
+
         $this->filter_sort_order = 'desc';
     }
 
diff --git a/plugins/CoreHome/javascripts/dataTable.js b/plugins/CoreHome/javascripts/dataTable.js
index e49228a6ca784db6e31039d0e3a787983bde2589..54643b578d1bd6252cb8803383f3902b24222686 100644
--- a/plugins/CoreHome/javascripts/dataTable.js
+++ b/plugins/CoreHome/javascripts/dataTable.js
@@ -1273,7 +1273,9 @@ $.extend(DataTable.prototype, UIControl.prototype, {
                 }
             })
             .click(generateClickCallback('pivotBy', null, function () {
-                if (self.param.pivotBy) {
+                if (self.param.pivotBy
+                    && self.param.pivotBy != '0'
+                ) {
                     self.param.pivotBy = '0'; // set to '0' so it will be sent in the request and override the saved param
                     self.param.pivotByColumn = '0';
                 } else {
@@ -1282,6 +1284,10 @@ $.extend(DataTable.prototype, UIControl.prototype, {
                         self.param.pivotByColumn = self.props.pivot_by_column;
                     }
                 }
+
+                // remove sorting so it will default to first column in table
+                self.param.filter_sort_column = '';
+                self.notifyWidgetParametersChange(domElem, {filter_sort_column: ''});
             }));
 
         // handle highlighted icon