diff --git a/src/metabase/query_processor/util/nest_query.clj b/src/metabase/query_processor/util/nest_query.clj
index 732457b47fcf5b4e16cafc3b94341f1e2511fc6a..95b2147ad449d9aae61817c2001914d6e0ca7e11 100644
--- a/src/metabase/query_processor/util/nest_query.clj
+++ b/src/metabase/query_processor/util/nest_query.clj
@@ -66,12 +66,11 @@
         used-fields    (into #{} (map keep-source+alias-props) usages)
         nominal-fields (into #{} (keep ->nominal-ref) usages)
         nfc-roots      (into #{} (keep nfc-root) used-fields)]
-    (letfn [(used? [[_tag id-or-name {::add/keys [source-table]}, :as field]]
+    (letfn [(used? [[_tag _id-or-name {::add/keys [source-table]}, :as field]]
               (or (contains? used-fields (keep-source+alias-props field))
                   ;; We should also consider a Field to be used if we're referring to it with a nominal field literal
                   ;; ref in the next stage -- that's actually how you're supposed to be doing it anyway.
-                  (and (integer? id-or-name)
-                       (= source-table ::add/source)
+                  (and (= source-table ::add/source)
                        (contains? nominal-fields (->nominal-ref field)))
                   (contains? nfc-roots (field-id-props field))))
             (used?* [field]
diff --git a/test/metabase/query_processor/pivot_test.clj b/test/metabase/query_processor/pivot_test.clj
index 576ef8d50d8642e1d4d974f90f8528c3e327d521..eeb7b295e9beaf53bf37e04741731d845fd5b68e 100644
--- a/test/metabase/query_processor/pivot_test.clj
+++ b/test/metabase/query_processor/pivot_test.clj
@@ -313,6 +313,43 @@
                           (assoc :info {:visualization-settings viz-settings})
                           qp.pivot/run-pivot-query))))))))))
 
+(deftest nested-models-with-expressions-pivot-breakout-names-test
+  (testing "#43993 again - breakouts on an expression from the inner model should pass"
+    (mt/with-temp [Card model1 {:type :model
+                                :dataset_query
+                                (mt/mbql-query products
+                                               {:source-table $$products
+                                                :expressions  {"Rating Bucket" [:floor $products.rating]}})}
+                   Card model2 {:type :model
+                                :dataset_query
+                                (mt/mbql-query orders
+                                               {:source-table $$orders
+                                                :joins        [{:source-table (str "card__" (u/the-id model1))
+                                                                :alias        "model A - Product"
+                                                                :fields       :all
+                                                                :condition    [:= $orders.product_id
+                                                                               [:field %products.id
+                                                                                {:join-alias "model A - Product"}]]}]})}]
+      (testing "Column aliasing works when joining an expression in an inner model"
+        (let [query        (mt/mbql-query
+                             orders {:source-table (str "card__" (u/the-id model2))
+                                     :aggregation  [[:sum [:field "SUBTOTAL" {:base-type :type/Number}]]]
+                                     :breakout     [[:field "Rating Bucket" {:base-type  :type/Number
+                                                                             :join-alias "model A - Product"}]]})
+              viz-settings (mt/$ids orders {:pivot_table.column_split
+                                            {:columns     [[:field "Rating Bucket"
+                                                            {:base-type  :type/Number
+                                                             :join-alias "model A - Product"}]]}})]
+          (testing "for a regular query"
+            (is (=? {:status :completed}
+                    (qp/process-query query))))
+          (testing "and a pivot query"
+            (is (=? {:status    :completed
+                     :row_count 6}
+                    (-> query
+                        (assoc :info {:visualization-settings viz-settings})
+                        qp.pivot/run-pivot-query)))))))))
+
 (deftest ^:parallel dont-return-too-many-rows-test
   (testing "Make sure pivot queries don't return too many rows (#14329)"
     (let [results (qp.pivot/run-pivot-query (test-query))