Duvida de String em tabela
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?
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
Curtidas 0
Respostas
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?
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