Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

x_soldier

Loop

Mensagens Recomendadas

x_soldier

Boas Pessoal!

Quero separar os valores do 2º campo por virgulas, pois tenho vários "CCTIT_CODIGO" a corresponderem a um "CLI_CODIGO".

O objectivo é ele não me dar várias linhas. Como poderei fazer isto?

SELECT {CLIENTES_CONTAS_TITULOS}.[CLI_CODIGO],{CLIENTES_CONTAS_TITULOS}.[CCTIT_CODIGO]
FROM {CLIENTES_CONTAS_TITULOS}
WHERE {CLIENTES_CONTAS_TITULOS}.[CLI_CODIGO] = '31497'

Desde já obrigado e bom ano  :confused:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

estas a dizer que tens varios registos com o mesmo valor nos dois campos da mesma tabela ?

o que queres dizer com "separar com virgula" ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
x_soldier

estas a dizer que tens varios registos com o mesmo valor nos dois campos da mesma tabela ?

o que queres dizer com "separar com virgula" ?

O que acontece é que para o mesmo código de cliente tenho várias carteiras... O que faz com que me dê varias linhas para o mesmo código de cliente. O que queria era que me desse apenas uma linha, numa coluna o código de cliente e na outra todos os códigos de carteiras separadas por virgula ou ponto e virgula.

Obrigado :confused:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

nao estou a ver bem a estrutura de tabelas que tens ... esta muito cunfuso o que estas a dizer ... faz ai um post com as tabelas onde tens a info que queres retornar (e campos)


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon
SELECT tabela.campo1, tabela.campo2
FROM tabela
WHERE tabela.campo1 = 'xpto'
INTO OUTFILE '/somewhere/abc.txt'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY ','


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Usa o GROUP_CONCAT.

Exemplo não testado.

SELECT {CLIENTES_CONTAS_TITULOS}.[CLI_CODIGO],
       GROUP_CONCAT({CLIENTES_CONTAS_TITULOS}.[CCTIT_CODIGO] SEPARATOR ',')
FROM {CLIENTES_CONTAS_TITULOS}
GROUP BY {CLIENTES_CONTAS_TITULOS}.[CLI_CODIGO]

Exemplo testado :confused:

mysql> select codigo, code2 from cct;
+--------+-------+
| codigo | code2 |
+--------+-------+
|      1 |     2 |
|      1 |     3 |
|      1 |     4 |
|      2 |     4 |
|      2 |     5 |
|      3 |     6 |
+--------+-------+
6 rows in set (0.00 sec)

mysql> select codigo, group_concat(code2 separator ',') from cct group by codigo;
+--------+-----------------------------------+
| codigo | group_concat(code2 separator ',') |
+--------+-----------------------------------+
|      1 | 2,3,4                             |
|      2 | 4,5                               |
|      3 | 6                                 |
+--------+-----------------------------------+
3 rows in set (0.00 sec)


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
x_soldier

Usa o GROUP_CONCAT.

Exemplo não testado.

SELECT {CLIENTES_CONTAS_TITULOS}.[CLI_CODIGO],
       GROUP_CONCAT({CLIENTES_CONTAS_TITULOS}.[CCTIT_CODIGO] SEPARATOR ',')
FROM {CLIENTES_CONTAS_TITULOS}
GROUP BY {CLIENTES_CONTAS_TITULOS}.[CLI_CODIGO]

Exemplo testado :P

mysql> select codigo, code2 from cct;
+--------+-------+
| codigo | code2 |
+--------+-------+
|      1 |     2 |
|      1 |     3 |
|      1 |     4 |
|      2 |     4 |
|      2 |     5 |
|      3 |     6 |
+--------+-------+
6 rows in set (0.00 sec)

mysql> select codigo, group_concat(code2 separator ',') from cct group by codigo;
+--------+-----------------------------------+
| codigo | group_concat(code2 separator ',') |
+--------+-----------------------------------+
|      1 | 2,3,4                             |
|      2 | 4,5                               |
|      3 | 6                                 |
+--------+-----------------------------------+
3 rows in set (0.00 sec)

Obtenho a seguinte mensagem tanto para uma solução como para outra: Msg 102, Level 15, State 1, Line 1

Incorrect syntax near 'separator

Estarei a fazer algo errado?

Obrigado :confused:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Obtenho a seguinte mensagem tanto para uma solução como para outra: Msg 102, Level 15, State 1, Line 1

Incorrect syntax near 'separator

Estarei a fazer algo errado?

Tens a certeza que puseste o tópico no quadro correcto?

A tua base de dados (mais propriamente o teu SGBD) é o MySQL?

aquelas chavetas bem que me pareceram estranhas ...


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
x_soldier

Tens a certeza que puseste o tópico no quadro correcto?

A tua base de dados (mais propriamente o teu SGBD) é o MySQL?

aquelas chavetas bem que me pareceram estranhas ...

Tens razão deveria ter colocado em "sql server"... Sorry!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
f-22

Boas,

Se bem percebi o que queres, tentei fazer-te um script. executa-o tenta perceber e adapta ao teu caso.

-- para criar uma tabela de testes
select * into tabela_teste
from (select 1 as id, 1 as outroId
union select 1, 2
union select 1, 3
union select 1, 4
union select 2, 1
union select 2, 2
union select 3, 2) t

-- so para veres a tabela que criaste
select * from tabela_teste

-- query
select id, STUFF((SELECT ','+Convert(varchar(50),t2.outroId) FROM tabela_teste t2 WHERE t2.id=t.id FOR XML PATH('')) , 1 , 1 , '' )
from tabela_teste as t
group by id

-- apaga a tabela de testes
drop table tabela_teste

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
x_soldier

Boas,

Se bem percebi o que queres, tentei fazer-te um script. executa-o tenta perceber e adapta ao teu caso.

-- para criar uma tabela de testes
select * into tabela_teste
from (select 1 as id, 1 as outroId
union select 1, 2
union select 1, 3
union select 1, 4
union select 2, 1
union select 2, 2
union select 3, 2) t

-- so para veres a tabela que criaste
select * from tabela_teste

-- query
select id, STUFF((SELECT ','+Convert(varchar(50),t2.outroId) FROM tabela_teste t2 WHERE t2.id=t.id FOR XML PATH('')) , 1 , 1 , '' )
from tabela_teste as t
group by id

-- apaga a tabela de testes
drop table tabela_teste

Obrigado pela ajuda Amigo :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.