ANS-0189 · RECHERCHES ENREGISTRéES ET FORMULES

Comment utiliser DENSE_RANK pour les données des lignes de transaction dans les recherches NetSuite

Utilisez SuiteScript 2.x et des formules SQL pour extraire des informations spécifiques classées à partir des lignes de transaction.

Solution courte

Pour récupérer les données des lignes de transaction classées par ordre de rang, définissez des colonnes de recherche personnalisées à l’aide du module N/search de SuiteScript 2.x. Utilisez la fonction search.createColumn avec des formules d’agrégation intégrant DENSE_RANK (une extension Oracle SQL) pour regrouper et classer les éléments selon des critères tels que la date de transaction.

Scénario

Les utilisateurs doivent extraire des informations spécifiques des lignes de transaction, telles que le dernier identifiant de transaction, la date, la quantité ou le taux pour chaque article, en fonction d’un critère de classement tel que la date de transaction. Cela nécessite des fonctionnalités de recherche avancées allant au-delà des filtres de recherche standard de NetSuite.

Solution

Pour ce faire, une requête SuiteScript 2.x doit être construite à l’aide de définitions de colonnes spécifiques. La solution consiste à utiliser search.createColumn pour définir chaque colonne de sortie souhaitée, en intégrant des fonctions d’agrégation avec DENSE_RANK afin de classer et de sélectionner les données pertinentes. La syntaxe keep(dense_rank last order by {trandate}), une extension d’Oracle SQL, est utilisée dans la formule pour sélectionner la valeur appropriée en fonction de son classement par date de transaction.

L’extrait de code SuiteScript 2.x suivant illustre les définitions de colonnes requises :

var columns = [];
columns.push(search.createColumn({name: 'item', summary: search.Summary.GROUP}));
columns.push(search.createColumn({name: 'formulatext', summary: search.Summary.MAX, formula: "max({tranid}) keep(dense_rank last order by {trandate})"}));
columns.push(search.createColumn({name: 'formuladate', summary: search.Summary.MAX, formula: "max({trandate}) keep(dense_rank last order by {trandate})", sort: search.Sort.ASC}));
columns.push(search.createColumn({name: 'formulanumeric', summary: search.Summary.MAX, formula: "max({quantity}) keep(dense_rank last order by {trandate})"}));
columns.push(search.createColumn({name: 'formulacurrency', summary: search.Summary.MAX, formula: "max({rate}) keep(dense_rank last order by {trandate})"}));

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Recherches enregistrées et formules

Parler à un consultant