Ir para conteúdo

POWERED BY:

Arquivado

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

rafa-martin

o que está errado nessa query?

Recommended Posts

pessoal tenho fiz a seguinte proc

 

select convert(varchar(10), a.dat_proposta, 103) as Data_Proposta,

b.cod_produto,

 

--ALTERADO POR RAFAEL

CASE b.des_versao when 'APP' then 82001

when 'VidaCorr' then 93002

when 'ApExc' then 82003

when 'NossaVidaSP' then 91002

END as Cod_Produto_OK,

--FIM

 

CASE b.cod_produto when 900 then 'AP Premiado'

when 901 then 'Nossa Vida'

when 905 then 'AP Exclusivo'

when 91002 then 'NV Servidor Público'

Else 'Desconhecido'

END AS 'Produto',

count(1) AS 'Quantidade',

 

(select

case c.cod_produto when 91002 then count(a.dat_proposta)

when 900 then count(a.dat_proposta)

when 901 then count(a.dat_proposta)

when 905 then count(a.dat_proposta)

end as 'Quantidade'

from

mnc.mapfre_nossa_caixa.dbo.tb_vida_cotacao a,tb_cotacao_mapfre b,tb_versao c

where

a.cod_cotacao = b.cod_cotacao

and a.dat_proposta >= CONVERT(VARCHAR(4), YEAR(GETDATE())) + '.' + CONVERT(VARCHAR(2), MONTH(GETDATE())) + '.01 00:00:00'

and a.dat_proposta <= CONVERT(VARCHAR(10), GETDATE() - 1, 102) + ' 23:59:59'

and a.cod_nivel_cotacao = 3

and val_premio_liquido > 0

and c.cod_versao = a.cod_versao

and not (nom_proponente like '%teste%')

and b.cod_status = 2

group by convert(varchar(10), a.dat_proposta, 103), c.cod_produto, c.des_versao

order by convert(varchar(10), a.dat_proposta, 103), c.cod_produto, c.des_versao) as QtdeIntRel

 

 

 

from mnc.mapfre_nossa_caixa.dbo.tb_vida_cotacao a,

tb_versao b

where dat_proposta >= CONVERT(VARCHAR(4), YEAR(GETDATE())) + '.' + CONVERT(VARCHAR(2), MONTH(GETDATE())) + '.01 00:00:00'

and dat_proposta <= CONVERT(VARCHAR(10), GETDATE() -1, 102) + ' 23:59:59'

and a.cod_versao = b.cod_versao

and cod_nivel_cotacao = 3

and val_premio_liquido > 0

and not (nom_proponente like '%teste%')

group by convert(varchar(10), a.dat_proposta, 103), b.cod_produto, b.des_versao

order by convert(varchar(10), a.dat_proposta, 103), b.cod_produto, b.des_versao

 

 

Vejam que onde está negrito tem uma subquery. Fiz isso porque eu preciso somente da coluna quantidade ao lado das outras colunas que tem no primeiro select. Se eu executar somente essa subquery funciona belezinha. Se eu executo do jeito que está aí me dá o seguinte erro:

 

 

 

Server: Msg 1033, Level 15, State 1, Line 39

The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.

 

Pq? O que esté errado?

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq. a clausula order by não é aceita em subqueries, views, funções, etc , é só retirar o order by da sub-query ...t+

Vejam que onde está negrito tem uma subquery. Fiz isso porque eu preciso somente da coluna quantidade ao lado das outras colunas que tem no primeiro select. Se eu executar somente essa subquery funciona belezinha. Se eu executo do jeito que está aí me dá o seguinte erro:Server: Msg 1033, Level 15, State 1, Line 39The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.Pq? O que esté errado?Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais olha só o que eu tentei fazer. No meu subselect eu fiz isso.

 

select top 100 percent.

 

só que me dá esse erro:

 

Server: Msg 512, Level 16, State 1, Line 1

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

 

só que essa minha subquery vai retornar vários registros, várias linhas.

 

pq se eu executar ela em separado, retorna todos os registros belezinha. só que como eu tenho que jogar essa coluna (com os resultados), eu creie essa subquery. e essa subquery vai retornar vários registros.

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra naum dei certo com in.

eu fiz oua outra query assim:

 

select SQLA.*, SQLB.*

from

(select convert(varchar(10), a.dat_proposta, 103) as Data_Proposta,

b.cod_produto,

 

--ALTERADO POR RAFAEL

CASE b.des_versao when 'APP' then 82001

when 'VidaCorr' then 93002

when 'ApExc' then 82003

when 'NossaVidaSP' then 91002

END as Cod_Produto_OK,

--FIM

 

CASE b.cod_produto when 900 then 'AP Premiado'

when 901 then 'Nossa Vida'

when 905 then 'AP Exclusivo'

when 91002 then 'NV Servidor Público'

Else 'Desconhecido'

END AS 'Produto',

count(1) AS 'Quantidade_SQLB'

from mnc.mapfre_nossa_caixa.dbo.tb_vida_cotacao a,

tb_versao b

where dat_proposta >= CONVERT(VARCHAR(4), YEAR(GETDATE())) + '.' + CONVERT(VARCHAR(2), MONTH(GETDATE())) + '.01 00:00:00'

--and dat_proposta <= CONVERT(VARCHAR(10), GETDATE() -1, 102) + ' 23:59:59'

and a.dat_proposta <= CONVERT(VARCHAR(10), GETDATE() -1, 102) + ' 23:59:59'

and a.cod_versao = b.cod_versao

and cod_nivel_cotacao = 3

and val_premio_liquido > 0

--and not (nom_proponente like '%teste%')

group by convert(varchar(10), a.dat_proposta, 103), b.cod_produto, b.des_versao) as SQLB,

--order by convert(varchar(10), a.dat_proposta, 103), b.cod_produto, b.des_versao

 

--query que pega todos que passaram pelo processo de carga

(select

CASE c.cod_produto when 900 then count(a.dat_proposta)

when 901 then count(a.dat_proposta)

when 905 then count(a.dat_proposta)

when 91002 then count(a.dat_proposta)

end AS 'Quantidade_SQLA'

from mnc.mapfre_nossa_caixa.dbo.tb_vida_cotacao a,

tb_cotacao_mapfre b,

tb_versao c

where a.cod_cotacao = b.cod_cotacao

and a.dat_proposta >= CONVERT(VARCHAR(4), YEAR(GETDATE())) + '.' + CONVERT(VARCHAR(2), MONTH(GETDATE())) + '.01 00:00:00'

--and a.dat_proposta <= CONVERT(VARCHAR(10), GETDATE() -1, 102) + ' 23:59:59'

and a.dat_proposta <= CONVERT(VARCHAR(10), GETDATE() - 1, 102) + ' 23:59:59'

and a.cod_nivel_cotacao = 3

and val_premio_liquido > 0

and c.cod_versao = a.cod_versao

--and not (nom_proponente like '%teste%')

and b.cod_status = 2

group by convert(varchar(10), a.dat_proposta, 103), c.cod_produto, c.des_versao) as SQLA

--order by convert(varchar(10), a.dat_proposta, 103), c.cod_produto, c.des_versao

 

where

SQLA.cod_produto = SQLB.cod_produto and

SQLA.dat_proposta = SQLB.dat_proposta

 

group by SQLA.dat_proposta, SQLA.cod_produto, SQLB.dat_proposta,

SQLB.cod_produto, SQLA.Produto, SQLA.Quantidade_SQLA, SQLB.Produto,

SQLB.Quantidade_SQLB

order by SQLA.dat_proposta, SQLA.cod_produto

 

só que me dá esses erros:

Server: Msg 207, Level 16, State 3, Line 6

Invalid column name 'dat_proposta'.

Server: Msg 207, Level 16, State 1, Line 6

Invalid column name 'cod_produto'.

Server: Msg 207, Level 16, State 1, Line 6

Invalid column name 'dat_proposta'.

Server: Msg 207, Level 16, State 1, Line 6

Invalid column name 'cod_produto'.

Server: Msg 207, Level 16, State 1, Line 6

Invalid column name 'dat_proposta'.

Server: Msg 207, Level 16, State 1, Line 6

Invalid column name 'Produto'.

Server: Msg 207, Level 16, State 1, Line 6

Invalid column name 'cod_produto'.

Server: Msg 207, Level 16, State 1, Line 6

Invalid column name 'dat_proposta'.

Server: Msg 207, Level 16, State 1, Line 6

Invalid column name 'dat_proposta'.

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.