Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandre Luccia

select agrupar campos sendo um diferente dos outros

Recommended Posts

select agrupar campos sendo um diferente dos outros

 

tenho o seguinte select:

 

     SELECT '<horario>'		 +
                     '<hr_de>'           + dbo.spb_fc_mascara_valor(right('000000' + CAST(hr_de AS varchar(8)), 6), '##:##:##') + '</hr_de>' +
                     '<hr_ate>'          + dbo.spb_fc_mascara_valor(right('000000' + CAST(hr_ate AS varchar(8)), 6), '##:##:##') + '</hr_ate>' +
                     '<dt_inicio>'       + CONVERT(varchar(10), dt_inicio, 103) + '</dt_inicio>' +
                     '<vl_emissor>'      + dbo.spb_fc_mascara_valor(CAST(ABS(vl_emissor) AS varchar(50)), '###,###,###,###,###,###.##') + '</vl_emissor>' +
                     '<vl_destinatario>' + dbo.spb_fc_mascara_valor(CAST(ABS(vl_destinatario) AS varchar(50)), '###,###,###,###,###,###.##') + '</vl_destinatario>' +
                     '<fl_d0>'           + CASE WHEN fl_d0 = 1 THEN 'Sim' ELSE 'Não' END + '</fl_d0>' +
                     '</horario>'
                FROM spb_tb_gen_tarifas_bc (NOLOCK)

                GROUP BY dt_inicio, cd_msg, hr_de, hr_ate, fl_d0, vl_emissor, vl_destinatario

                HAVING (cd_msg = @cd_msg)
                AND (dt_inicio = @dt_inicio_v)
                AND (hr_de  = @hr_ini)
                AND (hr_ate = @hr_fim)

 

Neste caso eu agrupo os valores iguais, porém queria exibir o dt_inicio mas no caso ele nunca vai conseguir agrupar as datas, pois elas nunca serão iguais. Queria trazer as dt_inicio mas não considera-las no agrupamente. talvez essa pergunta seja idiota, mas sou newba

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente trocar

 

GROUP BY dt_inicio

 

por

 

GROUP BY bo.spb_fc_mascara_valor(right('000000' + CAST(hr_de AS varchar(8)), 6), '##:##:##')

 

e todos os demais formatados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente trocar

 

GROUP BY dt_inicio

 

por

 

GROUP BY bo.spb_fc_mascara_valor(right('000000' + CAST(hr_de AS varchar(8)), 6), '##:##:##')

 

e todos os demais formatados.

 

não rolou :( o problema é a data, que está diferente, precisaria exibir dt_inicio, como somente ela esta diferente não deixa agrupar, neste caso precisaria aparecer o valor da data.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Queria trazer as dt_inicio mas não considera-las no agrupamente

 

Sem chance. Se você precisa trazer um campo e vai usar um agregador (no seu caso um GROUP BY) ele precisa estar agruprando.

O que pode fazer, é converter este campo para DD/MM/YYYY, retirando a hora.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem chance. Se você precisa trazer um campo e vai usar um agregador (no seu caso um GROUP BY) ele precisa estar agruprando.

O que pode fazer, é converter este campo para DD/MM/YYYY, retirando a hora.

 

Abçs

 

Entendi mas nao sei como fazer, preciso pegar a data mas não posso usar ela como parametro para agrupar. :(

 

Flaram em criar uma tabela temporaria e cruzar as informações. Alguem pode me ajduar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um campo "id" ou "nome" nesta tabela? eu soh vi datas

 

Tem como mandar a estrutura da tabela spb_tb_gen_tarifas_bc

 

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um campo "id" ou "nome" nesta tabela? eu soh vi datas

 

Tem como mandar a estrutura da tabela spb_tb_gen_tarifas_bc

 

 

Abçs

 

pior q não existe, sugeri a criação de um id para relacionar, mas não tem :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.