Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
>
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
>
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
>
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?
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
>
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 :(
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.