Duvida de String em tabela
15/06/2020
0
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
Curtir tópico
+ 0
Responder
Posts
15/06/2020
Ricardo Arraes
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
Responder
Clique aqui para fazer login e interagir na Comunidade :)