Duvida de String em tabela

SQL Server

SQL

15/06/2020

Tenho a seguinte tabela:
CREATE TABLE Setor (codigo integer not null, codigo_pai integer, sigla varchar(30), constraint PK_Setor primary key(codigo), constraint FK_Setor foreign key(codigo_pai) references setor(codigo));

INSERT INTO setor values (1, null, 'Presidencia'),(2,1,'ST'), (3,1,'SCI'),(4,3,'COGES' ),(5,3,'COEPA'),(6,2,'SGA'),(7,6,'COGED'),(8,6,'COGELIC');

Agora preciso criar um comando SQL que, utilizando o String_AGG, traga o setor responsável e seus subsetores sem repetição, quando um setor não tiver subsetor ele não deve ser mostrado. Estou na duvida nesse procedimento, como faço isso?
Julio Penha

Julio Penha

Curtidas 0

Respostas

Ricardo Arraes

Ricardo Arraes

15/06/2020

Tenho a seguinte tabela:
CREATE TABLE Setor (codigo integer not null, codigo_pai integer, sigla varchar(30), constraint PK_Setor primary key(codigo), constraint FK_Setor foreign key(codigo_pai) references setor(codigo));

INSERT INTO setor values (1, null, 'Presidencia'),(2,1,'ST'), (3,1,'SCI'),(4,3,'COGES' ),(5,3,'COEPA'),(6,2,'SGA'),(7,6,'COGED'),(8,6,'COGELIC');

Agora preciso criar um comando SQL que, utilizando o String_AGG, traga o setor responsável e seus subsetores sem repetição, quando um setor não tiver subsetor ele não deve ser mostrado. Estou na duvida nesse procedimento, como faço isso?


Fala Julio, beleza?

cara, acredito que podes tentar assim:

SELECT STRING_AGG(setpai.sigla) FROM Setor AS setsub LEFT JOIN Setor AS setpai ON setpai.codigo=setsub.codigo_pai WHERE (NOT setsub.codigo_pai IS NULL AND setsub.codigo_pai >0) GROUP BY setpai.sigla

não testei a query, então se essa não der certo, podes tentar tambem:

SELECT DISTINCT STRING_AGG(setpai.sigla) FROM Setor AS setsub LEFT JOIN Setor AS setpai ON setpai.codigo=setsub.codigo_pai WHERE (NOT setsub.codigo_pai IS NULL AND setsub.codigo_pai >0)

Se nenhum der certo, avisa que ai eu penso em outra coisa, mas tente entender o raciocínio por trás da query, acredito que pode lhe dar uma boa ideia de como usar
GOSTEI 0
POSTAR