GlideAggregate SUM Returns Incorrect or Empty ResultsIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } When using GlideAggregate to calculate totals (such as SUM, COUNT, or AVG), the aggregate result may return 0, null, or an empty value even though matching records exist and contain valid data. This behavior is inconsistent and may appear to work on some tables (for example, sc_req_item) but fail on others such as alm_license, task, or CMDB tables. Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } N/A Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } GlideAggregate performs aggregation using SQL GROUP BY semantics.When aggregate functions such as SUM, COUNT, or AVG are added without explicitly disabling grouping, the platform may implicitly group results based on internal or referenced fields. On high-cardinality tables (for example alm_license, CMDB, or task-based tables), this implicit grouping can cause: multiple grouped result rows instead of a single aggregate rowgetAggregate() to return an empty value or nullnumeric conversion of the empty value to result in 0 This behavior may appear inconsistent because some tables (such as sc_req_item) naturally return a single logical row and therefore do not exhibit the issue, even without explicitly disabling grouping. Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } When using GlideAggregate to retrieve a single aggregated value (for example, total available licenses), explicitly disable grouping by calling .setGroup(false) before executing the query. Correct Pattern var ga = new GlideAggregate('alm_license');ga.addQuery('model', modelSysId);ga.addQuery('install_status', '1');ga.addQuery('product_type', '!=', 'maintenance');ga.addAggregate('SUM', 'allocations_available');ga.setGroup(false); // Required to prevent implicit groupingga.query(); if (ga.next()) { var total = parseInt(ga.getAggregate('SUM', 'allocations_available'), 10) || 0;} Using .setGroup(false) ensures: a single aggregate result row is returnedgetAggregate() consistently returns the expected valuepredictable behavior across all tables Note Do not use .setGroup(false) when intentional grouping is required (for example, when using groupBy() to aggregate results per model or category).