Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Duda Procedimiento

Estas en el tema de Duda Procedimiento en el foro de SQL Server en Foros del Web. Que tal tengo, tengo este procedimiento: declare @mes varchar (30) declare @anio varchar (5) declare @sql nvarchar (1000) set @mes = datepart ("m",?) set @anio ...
  #1 (permalink)  
Antiguo 10/03/2008, 17:27
 
Fecha de Ingreso: febrero-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Duda Procedimiento

Que tal tengo, tengo este procedimiento:


declare @mes varchar (30)
declare @anio varchar (5)
declare @sql nvarchar (1000)
set @mes = datepart ("m",?)
set @anio = datepart ("yyyy",?)
set @sql = 'insert into A4E_CuentaContable (reporteperiodo_id,concepto,
montomn,montome,montototal) select b.reporteperiodo_id,a.cuenta as concepto,b.montomn,b.montoME, ' + @mes + ' from tmp_a4e_cuentascontablesab a
inner join tmp_a4e_cuentacontable b on a.cuenta=b.concepto where anio =' + @anio + 'order by a.cuenta'
case @mes when datepart ("m",?)=1 then 'Enero'
when datepart ("m",?)=1 then 'Febrero'
when datepart ("m",?)=1 then 'Marzo'
when datepart ("m",?)=1 then 'Abril'
when datepart ("m",?)=1 then 'Mayo'
when datepart ("m",?)=1 then 'Junio'
when datepart ("m",?)=1 then 'Julio'
when datepart ("m",?)=1 then 'Agosto'
when datepart ("m",?)=1 then 'Septiembre'
when datepart ("m",?)=1 then 'Octubre'
when datepart ("m",?)=1 then 'Noviembre'
when datepart ("m",?)=1 then 'Diciembre'
else @mes

execute sp_executesql @sql

Lo que pasa es que ya exiten varibles en donde contiene la fecha entonce no se si con la funcion datepart me estraiga solo laparte que me interesa y guardarla en una variable asi como el uso del case no se si este correcto, ya que me manda un erro de :
[Microsoft][ODBC SQL Server Driver]Campo COUNT erróneo o error de sintaxis
  #2 (permalink)  
Antiguo 10/03/2008, 18:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Re: Duda Procedimiento

La estructura de tu CASE, es incorrecta:

SELECT au_fname, au_lname,
CASE state
WHEN 'CA' THEN 'California'
WHEN 'KS' THEN 'Kansas'
WHEN 'TN' THEN 'Tennessee'
WHEN 'OR' THEN 'Oregon'
WHEN 'MI' THEN 'Michigan'
WHEN 'IN' THEN 'Indiana'
WHEN 'MD' THEN 'Maryland'
WHEN 'UT' THEN 'Utah'
END AS StateName
FROM pubs.dbo.authors
ORDER BY au_lname
  #3 (permalink)  
Antiguo 11/03/2008, 11:08
 
Fecha de Ingreso: febrero-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Duda Procedimiento

OK; entonces la situacion es que no se pueden ocupar funciones en dentro de la sentencia CASE? por que tengo mi case de esta manera pero me sigue mandando el error: [Microsoft][ODBC SQL Server Driver]Campo COUNT erróneo o error de sintaxis


declare @anio varchar (5)
declare @sql nvarchar (1000)
set @mes = datepart ("m",?)
set @anio = datepart ("yyyy",?)
set @sql = 'insert into A4E_CuentaContable (reporteperiodo_id,concepto,
montomn,montome,montototal) select b.reporteperiodo_id,a.cuenta as concepto,b.montomn,b.montoME, ' + @mes + ' from tmp_a4e_cuentascontablesab a
inner join tmp_a4e_cuentacontable b on a.cuenta=b.concepto where anio =' + @anio + 'order by a.cuenta'
case @mes when datepart ("m",?)=1 then 'Enero'
when datepart ("m",?)=2 then 'Febrero'
when datepart ("m",?)=3 then 'Marzo'
when datepart ("m",?)=4 then 'Abril'
when datepart ("m",?)=5 then 'Mayo'
when datepart ("m",?)=6 then 'Junio'
when datepart ("m",?)=7 then 'Julio'
when datepart ("m",?)=8 then 'Agosto'
when datepart ("m",?)=9 then 'Septiembre'
when datepart ("m",?)=10 then 'Octubre'
when datepart ("m",?)=11 then 'Noviembre'
when datepart ("m",?)=12 then 'Diciembre'
else @mes

execute sp_executesql @sql
  #4 (permalink)  
Antiguo 11/03/2008, 12:20
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Re: Duda Procedimiento

Lo que esta mal, es la forma de utilizar tu FUNCION DATEPART, no entiendo que signifique la coma (,) y el singo de interrogacion (?)

DATEPART(m, TuCampoFecha)
  #5 (permalink)  
Antiguo 11/03/2008, 12:41
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: Duda Procedimiento

Que tal, a ver si entendi lo que quieres hacer..

Suponiendo que @Fecha es la variable donde se almacena la fecha que se requiere procesar..
anexo ejemplo con resultado...

Código:
Declare  @anio int
        ,@sql  nvarchar (1000)
        ,@mes  varchar(20)
        ,@Fecha Datetime

-----------------------------------------------------------------
-- Para generar informacion de ejemplo se toma fecha actual.
-----------------------------------------------------------------
Set @Fecha = getdate()


set @anio = datepart ("yyyy",@Fecha)

Set @mes = case datepart ("m",@Fecha) 
      when 1 then 'Enero'
      when 2 then 'Febrero'
      when 3 then 'Marzo'
      when 4 then 'Abril'
      when 5 then 'Mayo'
      when 6 then 'Junio'
      when 7 then 'Julio'
      when 8 then 'Agosto'
      when 9 then 'Septiembre'
      when 10 then 'Octubre'
      when 11 then 'Noviembre'
      when 12 then 'Diciembre'
      End 

set @sql = 'insert into A4E_CuentaContable (reporteperiodo_id,concepto,montomn,montome,montototal) 
select b.reporteperiodo_id,a.cuenta as concepto,b.montomn,b.montoME, ' + @mes + ' from tmp_a4e_cuentascontablesab a 
inner join tmp_a4e_cuentacontable b on a.cuenta=b.concepto where anio = ' + cast(@anio as varchar) + ' order by a.cuenta'

print @sql


--execute sp_executesql @sql


-- Resultado

insert into A4E_CuentaContable (reporteperiodo_id,concepto,montomn,montome,montototal) 
select b.reporteperiodo_id,a.cuenta as concepto,b.montomn,b.montoME, Marzo from tmp_a4e_cuentascontablesab a 
inner join tmp_a4e_cuentacontable b on a.cuenta=b.concepto where anio = 2008 order by a.cuenta
faltaria descomentarizar el renglon de sp_executesql...


Saludos a ambos.
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.

Última edición por Andres95; 11/03/2008 a las 13:39
  #6 (permalink)  
Antiguo 11/03/2008, 13:33
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Duda Procedimiento

Solo le faltan las comitas a Marzo mi estimado Andres95.... por que si no asumira que se trata de una columna llamada Marzo....

Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #7 (permalink)  
Antiguo 11/03/2008, 13:37
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: Duda Procedimiento

Yo creo que si se trata de una columna llamada Marzo ya que esta mapeada contra la columna MontoTotal, que sugiere un campo numerico...

faltaria el comentario de Pacotux..


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #8 (permalink)  
Antiguo 11/03/2008, 13:53
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Duda Procedimiento

aahh ya te entendí.... tienes razón....

a ver Pacotux, aclaranos este tema.... jeje


Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:17.