Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/08/2013, 08:16
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Condicion de autonumeracion

Explicado en codigo :)

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. valor VARCHAR(30)
  4. )
  5.  
  6. INSERT INTO #temp VALUES ('001-002-000157472')
  7. INSERT INTO #temp VALUES ('001-002-000157473')
  8. INSERT INTO #temp VALUES ('001-002-000157474')
  9. INSERT INTO #temp VALUES ('001-002-000157469')
  10. INSERT INTO #temp VALUES ('001-002-000157475')
  11.  
  12. DECLARE @param VARCHAR(20)
  13. DECLARE @total INT
  14. DECLARE @maximo INT
  15. DECLARE @int_param INT
  16.  
  17. DECLARE @new_value VARCHAR(20)
  18. SET @param='0003'
  19.  
  20.  
  21. SELECT @total=COUNT(*) FROM(
  22. SELECT SUBSTRING(valor1,charindex('-',valor1,1)+1,LEN(valor1)) AS total FROM(
  23. SELECT SUBSTRING(valor,charindex('-',valor,1)+1,LEN(valor)) AS valor1 FROM #temp
  24. ) AS t1
  25. ) t2 WHERE total LIKE @param + '%'
  26.  
  27. IF @total=0
  28. BEGIN
  29.   SET @int_param=CONVERT(INT,@param)
  30.   SET @param=CONVERT(VARCHAR(20),@int_param)
  31.   SET @new_value= '001' + '-' + '002-' + REPLICATE('0',3) + @param + '00001'
  32. END  
  33. ELSE
  34. BEGIN
  35. SELECT @maximo=MAX(CONVERT(INT,total)) FROM(
  36. SELECT SUBSTRING(valor1,charindex('-',valor1,1)+1,LEN(valor1)) AS total FROM(
  37. SELECT SUBSTRING(valor,charindex('-',valor,1)+1,LEN(valor)) AS valor1 FROM #temp
  38. ) AS t1
  39. ) t2 WHERE total LIKE @param + '%'
  40. SET @maximo=@maximo+1
  41. SET @new_value= '001' + '-' + '002-' + REPLICATE('0',3) + CONVERT(VARCHAR(20),@maximo)
  42. END  
  43. INSERT INTO #temp VALUES (@new_value)
  44. SELECT * FROM #temp
  45.  
  46. ----------------------------------------------

ya lo que tienes que hacer es aplicar una logica parecida para un trigger o como lo vayas a manejar :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me