g_uval(G;S;X;D;N)
Returns a concatenated list of distinct values within a given group.
Function type
Vector only
Syntax
g_uval(G;S;X;D;N)
Input
| Argument | Type | Description |
|---|---|---|
G |
any | A space- or comma-separated list of column names Rows are in the same group
if their values for all of the columns listed in If If any of the columns listed in |
S |
integer | The name of a column in which every row evaluates to a 1 or 0, which determines
whether or not that row is selected to be included in the calculation If
If any of the values in
|
X |
any simple type | The column on which to apply the function A column name N/As
in |
D |
text | A single character used to separate the distinct values Note: The character should be surrounded by single quotes.
If |
N |
integer | The maximum number of distinct values in the result If the total number of distinct values exceeds this value, the result is truncated. If
|
Return Value
For every row in each group defined by G (and for those rows where
S=1, if specified), g_uval
returns a text value corresponding to the concatenation of the distinct values of
X in all rows that are in the same group as that row. The values are
presented in alphabetical order and are separated by the character denoted by
D.
If all values for a particular group are N/A, the result is the empty string.
Sample Usage
<base table="pub.doc.samples.ref.func.g_func_sample_usage"/> <willbe name="g_uval_1" value="g_uval(state;include;value;',';20)"/> <willbe name="g_uval_2" value="g_uval(state city;include;value;',';20)"/>

Example
Let's say we want to list the unique transactions that occurred at every store in our Sales Item Detail table (pub.demo.retail.item).
<base table="pub.demo.retail.item"/>
Create a computed column using the g_uval(G;S;X;D;N) function. Specify
store as the group (G), since we're grouping by store;
specify transid as X since we want the list of unique
transactions; and leave the selection parameter (S) blank, since we want to
take into account all of the transactions (not just a subset of those transactions). Also,
specify a comma as the separator (D) and set the maximum number of unique
values to 20 (N).
<willbe name="uniquetrans" value="g_uval(store;;transid;',';20)" label="Unique`Transactions"/>
The results from this will look like the following:

If we wanted to limit the number of unique transactions to just the first two, we could
change the N parameter to 2:
<willbe name="firsttwo" value="g_uval(store;;transid;',';2)" label="First Two`Transactions"/>
This would result in something that looks like the following:

