Returns a list of items that are frequently sold along with a specified item. This can be used to implement the "cross-selling" sales technique.
-- Contributor: Tim Dietrich (timdietrich@me.com) -- Additional Info: https://timdietrich.me/blog/netsuite-suiteql-items-frequently-sold-together/ SELECT TOP 10 SalesOrderLine2.Item AS Item, BUILTIN.DF( SalesOrderLine2.Item ) AS ItemName, BUILTIN.DF( SalesOrderLine2.ItemType ) AS ItemType, COUNT(*) AS TimesSoldTogether, ( SELECT SUM( ItemInventoryBalance.QuantityAvailable ) FROM ItemInventoryBalance WHERE ( ItemInventoryBalance.Item = SalesOrderLine2.Item ) ) AS QuantityAvailable FROM Transaction AS SalesOrder INNER JOIN TransactionLine AS SalesOrderLine1 ON ( SalesOrderLine1.Transaction = SalesOrder.ID ) INNER JOIN TransactionLine AS SalesOrderLine2 ON ( SalesOrderLine2.Transaction = SalesOrderLine1.Transaction ) AND ( SalesOrderLine2.Item <> SalesOrderLine1.Item ) AND ( SalesOrderLine2.ItemType IN ( 'InvtPart', 'NonInvtPart', 'Service' ) ) WHERE ( SalesOrder.Type = 'SalesOrd' ) AND ( SalesOrderLine1.Item = 99999 ) GROUP BY SalesOrderLine2.Item, BUILTIN.DF( SalesOrderLine2.Item ), BUILTIN.DF( SalesOrderLine2.ItemType ) ORDER BY TimesSoldTogether DESC
Click here to return to the list of available queries.
Hello, I’m Tim Dietrich. I design and build custom software for businesses running on NetSuite — from mobile apps and Web portals to Web APIs and integrations.
I’ve created several widely used open-source solutions for the NetSuite community, including the SuiteQL Query Tool and SuiteAPI, which help developers and businesses get more out of their systems.
I’m also the founder of SuiteStep, a NetSuite development studio focused on pushing the boundaries of what’s possible on the platform. Through SuiteStep, I deliver custom software and AI-driven solutions that make NetSuite more powerful, accessible, and future-ready.
Copyright © 2025 Tim Dietrich.