ESCRITA SQL NO SQLEXPRESS 2005
E ai pessoal, blz.
Seguinte me deparei com um problema. Eu programo em vb a um certo tempo utilizava banco de dados access e agora migrei para sql express, comecei com o 2005.
Ta correndo tudo muito bem, até que me deparei com uma escrita de sql que eu usava muito com o access e era uma maravilha que é a possibilidade de colocar condições dentro do sql. Ex.
Vamos supor que eu queira comparar o valor no banco de dados e dependendo do valor eu vou msotrar uma resposta diferente ao usuario.
iif(planos.tipo = true, [ô]Crédito[ô], [ô]Débito[ô])
Sendo que a primeira opção Crédito é se for verdadeiro, a segunda se for falso.
No access ela funfa deste jeitoque vcs viram ai eu insiro ela no meio do select antes do from.
No sqlexpress 2005 ele da um erro [Ô]Incorrect syntax near [ô]planos[ô][Ô]
outra alternativa era o case when
SQL = [Ô]select codigo, planos case when tipo = true [ô]Crédito[ô] then when tipo = false then [ô]Débito[ô] as TipoConta from planos where plano is not null and ativo = true order by plano[Ô]
este me da este erro keyword [ô]case[ô].
parece que ele não aceita. mas li em alguns lugares q o case funciona no express.
Voces sabem me dizer onde estou errando.
Segue os sql:
com case when
SQL = [Ô]select codigo, planos case when tipo = true [ô]Crédito[ô] then when tipo = false then [ô]Débito[ô] as TipoConta from planos where plano is not null and ativo = true order by plano[Ô]
com iif
SQL = [Ô]select codigo, planos iif(planos.tipo = true, [ô]Crédito[ô], [ô]Débito[ô]) as TipoConta from planos where plano is not null and ativo = true order by plano[Ô]
Desde já agradeço a todos pela força.
Obrigado.
Seguinte me deparei com um problema. Eu programo em vb a um certo tempo utilizava banco de dados access e agora migrei para sql express, comecei com o 2005.
Ta correndo tudo muito bem, até que me deparei com uma escrita de sql que eu usava muito com o access e era uma maravilha que é a possibilidade de colocar condições dentro do sql. Ex.
Vamos supor que eu queira comparar o valor no banco de dados e dependendo do valor eu vou msotrar uma resposta diferente ao usuario.
iif(planos.tipo = true, [ô]Crédito[ô], [ô]Débito[ô])
Sendo que a primeira opção Crédito é se for verdadeiro, a segunda se for falso.
No access ela funfa deste jeitoque vcs viram ai eu insiro ela no meio do select antes do from.
No sqlexpress 2005 ele da um erro [Ô]Incorrect syntax near [ô]planos[ô][Ô]
outra alternativa era o case when
SQL = [Ô]select codigo, planos case when tipo = true [ô]Crédito[ô] then when tipo = false then [ô]Débito[ô] as TipoConta from planos where plano is not null and ativo = true order by plano[Ô]
este me da este erro keyword [ô]case[ô].
parece que ele não aceita. mas li em alguns lugares q o case funciona no express.
Voces sabem me dizer onde estou errando.
Segue os sql:
com case when
SQL = [Ô]select codigo, planos case when tipo = true [ô]Crédito[ô] then when tipo = false then [ô]Débito[ô] as TipoConta from planos where plano is not null and ativo = true order by plano[Ô]
com iif
SQL = [Ô]select codigo, planos iif(planos.tipo = true, [ô]Crédito[ô], [ô]Débito[ô]) as TipoConta from planos where plano is not null and ativo = true order by plano[Ô]
Desde já agradeço a todos pela força.
Obrigado.
Olha só andei pesquisando achei a forma correta mas nem dentro do ssms do sql ta rodando.
SELECT [CODIGO]
,[plano]
,[Ativo]
if [tipo]=True,[ô]Crédito[ô],[ô]Débito[ô] as TipoConta
FROM [Gestor].[dbo].[Planos]
Alguem consegue ver o que esta errado?
O erro é este
Msg 102, Level 15, State 1, Line 8
Incorrect syntax near [ô],[ô].
SELECT [CODIGO]
,[plano]
,[Ativo]
if [tipo]=True,[ô]Crédito[ô],[ô]Débito[ô] as TipoConta
FROM [Gestor].[dbo].[Planos]
Alguem consegue ver o que esta errado?
O erro é este
Msg 102, Level 15, State 1, Line 8
Incorrect syntax near [ô],[ô].
if [tipo]=True then [ô]Crédito[ô] else [ô]Débito[ô] as TipoConta
Incorrect syntax near the keyword [ô]then[ô].
Kraks ja to ficando loko prq não estou conseguindo ver o erro.
Este campo tipo é um campo Bit, isso quer dizer que armazena 1 para true e 0 para false. será que pode ser isso?
Kraks ja to ficando loko prq não estou conseguindo ver o erro.
Este campo tipo é um campo Bit, isso quer dizer que armazena 1 para true e 0 para false. será que pode ser isso?
Tente assim:
Select Case tipo When true Then [ô]Credito[ô] Else [ô]Debito[ô] End TipoConta
From Tabela
Select Case tipo When true Then [ô]Credito[ô] Else [ô]Debito[ô] End TipoConta
From Tabela
Rapaz consegui!
Tanto no ssms qto no vb.
Depois de levar uma surra desta escrita achei como funciona.
Segue ai para que necessite.
SQL = [Ô]SELECT CODIGO ,plano,TipoConta = case when tipo in ( [ô][Ô] & True & [Ô][ô] ) then [ô]Crédito[ô] when tipo in ( [ô][Ô] & False & [Ô][ô] ) then [ô]Débito[ô] End [Ô]
SQL = SQL & [Ô], ativo From Planos where plano is not null and ativo = [ô][Ô] & 1 & [Ô][ô] [Ô]
Interessante no sql express o alias ([Ô]tipoconta[Ô])tem de vir primeiro e ai eu falo o que ele irá verificar para receber os valores credito ou debito e neste caso que eu usei o case eu tenho de finalizar o case com o end. show de bola ficou bem legal.
Bom desde já agradeço a todos que se envolveram na solução.
obrigado a todos.
Tanto no ssms qto no vb.
Depois de levar uma surra desta escrita achei como funciona.
Segue ai para que necessite.
SQL = [Ô]SELECT CODIGO ,plano,TipoConta = case when tipo in ( [ô][Ô] & True & [Ô][ô] ) then [ô]Crédito[ô] when tipo in ( [ô][Ô] & False & [Ô][ô] ) then [ô]Débito[ô] End [Ô]
SQL = SQL & [Ô], ativo From Planos where plano is not null and ativo = [ô][Ô] & 1 & [Ô][ô] [Ô]
Interessante no sql express o alias ([Ô]tipoconta[Ô])tem de vir primeiro e ai eu falo o que ele irá verificar para receber os valores credito ou debito e neste caso que eu usei o case eu tenho de finalizar o case com o end. show de bola ficou bem legal.
Bom desde já agradeço a todos que se envolveram na solução.
obrigado a todos.
Tópico encerrado , respostas não são mais permitidas