Concatene vários valores de linha em 1 linha, com SQL para iSeries
Primeiro, preciso agradecer a Kent Milligan e seu artigo nohttp://www.mcpressonline.com/sql/techtip-combining-multiple-row-values-into-a-single-row-with-sql-in-db2-for-i.html por me levar tão longe neste problema quanto eu. Mas agora eu preciso expandir o que ele fez aqui.
Para evitar que você tenha que ir ao artigo dele, o problema que ele abordou foi concatenar dados de sequência de várias linhas em uma única linha na tabela resultante. Por exemplo:
Carros de mesa:
Make ModelFord FusionChevy TahoeHonda OdysseyFord TaurusFord FocusChevy MalibuResultados:
Make ModelChevy Malibu, TahoeFord Focus, Touro, FusãoHonda OdysseyIsso foi feito com a instrução SQL:
WITH numbered_sets(make, model, curr, prev) AS (
SELECT make, model,
ROW_NUMBER() OVER (PARTITION BY make ORDER BY model) AS curr,
ROW_NUMBER() OVER (PARTITION BY make ORDER BY model) -1 AS prev
FROM inventory)
SELECT make,
MAX (TRIM(L ',' FROM
CAST(SYS_CONNECT_BY_PATH(model, ',') AS VARCHAR(256)) ))
FROM numbered_sets
START WITH curr = 1
CONNECT BY make = PRIOR make AND prev = PRIOR curr
GROUP BY make
Consegui adaptá-lo à minha própria mesa e ir até onde queria chegar. Mas, para meus propósitos, tenho uma coluna adicional que preciso incluir para o agrupamento. Por exemplo:
Carros de mesa:
Marca do modeloFord Sedan FusionChevy SUV TahoeHonda Minivan OdysseyFord Sedan TaurusFord Sedan FocusChevy Sedan MalibuFord SUV EscapeFord SUV ExplorerChevy Sedan ImpalaPara os resultados, eu procuraria:
Marca do modeloSedan Chevy Malibu, ImpalaChevy SUV TahoeFusão De Sedan De Ford, Touro, FocoFord SUV Escape, ExploradorHonda Minivan OdysseyAlguém tem alguma opinião sobre o que tudo que eu preciso adicionar à declaração original para poder adicionar a coluna TYPE e GROUP sobre isso de acordo? Eu tentei várias coisas, mas suspeito que preciso fazer algo com a instrução CONNECT_BY_PATH, mas não sei ao certo o que.
Obrigado