Compartir a través de


JSON_ARRAYAGG (Transact-SQL)

Se aplica a:Azure SQL Database

Construye una matriz JSON a partir de una agregación de datos o columnas SQL.

Para crear un objeto JSON a partir de un agregado, use JSON_OBJECTAGG.

Nota:

Actualmente, tanto las funciones JSON_OBJECTAGG de agregado json como JSON_ARRAYAGG están disponibles en versión preliminar para Azure SQL Database.

Convenciones de sintaxis de Transact-SQL

Sintaxis

JSON_ARRAYAGG (value_expression [ order_by_clause ] [ json_null_clause ] ) 

json_null_clause ::=  NULL ON NULL | ABSENT ON NULL 

order_by_clause ::= ORDER BY <column_list>

Argumentos

value_expression

La expresión de valor puede ser una columna o expresión en una consulta o constantes o literales.

json_null_clause

Opcional. json_null_clause se puede usar para controlar el comportamiento de la función JSON_ARRAYAGG cuando value_expression es NULL. La opción NULL ON NULL convierte el valor NULL de SQL en un valor NULL de JSON al generar el valor del elemento en la matriz JSON. La opción ABSENT ON NULL omitirá el elemento de la matriz JSON si el valor es NULL. Si se omite, ABSENT ON NULL es el valor predeterminado.

order_by_clause

Opcional. El orden de los elementos de la matriz JSON resultante se puede especificar para ordenar las filas de entrada al agregado.

Ejemplos

Ejemplo 1

En el siguiente ejemplo se devuelve una matriz JSON vacía.

SELECT JSON_ARRAYAGG(null);

Resultado

[]

Ejemplo 2

En el siguiente ejemplo se construye una matriz JSON con tres elementos de un conjunto de resultados.

SELECT JSON_ARRAYAGG( c1 )
FROM (
    VALUES ('c'), ('b'), ('a')
) AS t(c1);

Resultado

["c","b","a"]

Ejemplo 3

En el ejemplo siguiente se construye una matriz JSON con tres elementos ordenados por el valor de la columna.

SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
    VALUES ('c'), ('b'), ('a')
) AS t(c1);

Resultado

["a","b","c"]

Ejemplo 4

En el ejemplo siguiente se devuelve un conjunto de resultados con dos columnas. La primera columna contiene el valor object_id. La segunda columna contiene una matriz JSON que contiene los nombres de las columnas. Las columnas de la matriz JSON se ordenan en función del valor column_id.

SELECT TOP(5) c.object_id, JSON_ARRAYAGG(c.name ORDER BY c.column_id) AS column_list
FROM sys.columns AS c
GROUP BY c.object_id;

Resultado

object_id lista_de_columnas
3 ["rsid","rscolid","hbcolid","rcmodified","ti","cid","ordkey","maxinrowlen","status","offset","nullbit","bitpos","colguid","ordlock"]
5 ["rowsetid","ownertype","idmajor","idminor","numpart","status","fgidfs","rcrows","cmprlevel","fillfact","maxnullbit","maxleaf","maxint","minleaf","minint","rsguid","lockres","scope_id"]
6 ["id","subid","partid","version","segid","cloneid","rowsetid","dbfragid","status"]
7 ["auid","type","ownerid","status","fgid","pgfirst","pgroot","pgfirstiam","pcused","pcdata","pcreserved"]
8 ["status","fileid","name","filename"]