SQL Server

Aqui te daria todos aquellos campos que NO son de tipo numerico SELECT Micampo FROM MyTabla WHERE ISNUMERIC(Micampo) = 0

Views 294 Downloads 11 File size 889KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Aqui te daria todos aquellos campos que NO son de tipo numerico SELECT Micampo FROM MyTabla WHERE ISNUMERIC(Micampo) = 0 Entonces, se haría: UPDATE MyTabla SET Micampo = 0 WHERE ISNUMERIC(Micampo) = 0

SUMAR el CAMPO y CONTAR cuantas veces se repite SELECT Codigo_item, Descripcion, SUM((CASE WHEN Documento LIKE 'Nota' THEN Cantidad ELSE 0 END) AS CantidadN, (COUNT(CASE WHEN Documento LIKE 'Nota' THEN Cantidad ELSE 0 END) AS Notas) , SUM((CASE WHEN Documento LIKE 'Factura' THEN Cantidad ELSE 0 END) AS CantidadF, (COUNT(CASE WHEN Documento LIKE 'Factura' THEN Cantidad ELSE 0 END)AS Facturas) FROM Kardex WHERE CATEGORIA = 'Tienda' and fecha BETWEEN '20170601' AND '20170630' GROUP BY CodigoProducto, DescripcionProducto;

     

El management studio es solo el administrador gráfico del servidor. Ese no tiene nada que ver con la versión de SQL Server que tengas instalada. SQL Server 2012, soporta hasta 10 gigas de tamaño por base de datos. Una version enterprise, actualmente SQL Server 2016. Evaluar la posibilidad de llevar información histórica a otra base de datos con esa misma versión express, ya que puedes crear muchas de datos. Recomiendo instalar versión 2012, 2014 o 2016, si va a instalar la edicion EXPRESS (gratis), pero con ADVANCED EDITION.

Las versiones de SQL Server (son: 6.0 (la que salio al mercado) 6.5 (un poco mas estable) 7.0 (mas estable aun) 2000 (casi profesional, Reporting Services como un parche) 2005 (revoluciono el mercado, RS, AS, IS) 2008 (incluido el R2, master data services) 2012 2014 2016 2017 (Este es un CTP, que ya insalada sobre Red Hat, Linux)

Ediciones: Express (la que tu tienes y es libre de cargo, free, pero version light, capacidad limitado POR base de datos) Developer (para desarrolladores) Standard Enterprise (muy profesional, pero muy costosa) Una guía: https://www.microsoft.com/es-es/sql-server/sql-server-2016-comparison Si la base de datos no es muy grande, por lo que se podria optar por la edicion STANDARD, ahora bien, si solo vas a ALMACENAR DATOS y no vas a utilizar los demas servicios como REPORTING SERVICES, ANALISYS SERVICES, INTEGRATION SERVICES, etc. Entonces, "reparte" tus bases en "varias bases" dentro de tu version EXPRESS, no nos comentas si es la EXPRESS simple o la ADVANCED. Ejecuto esto para obtener información: SELECT 'BuildClrVersion' ColumnName, SERVERPROPERTY('BuildClrVersion') ColumnValue UNION ALL SELECT 'Collation', SERVERPROPERTY('Collation') UNION ALL SELECT 'CollationID', SERVERPROPERTY('CollationID') UNION ALL SELECT 'ComparisonStyle', SERVERPROPERTY('ComparisonStyle') UNION ALL SELECT 'ComputerNamePhysicalNetBIOS', SERVERPROPERTY('ComputerNamePhysicalNetBIOS') UNION ALL SELECT 'Edition', SERVERPROPERTY('Edition') UNION ALL SELECT 'EditionID', SERVERPROPERTY('EditionID') UNION ALL SELECT 'EngineEdition', SERVERPROPERTY('EngineEdition') UNION ALL SELECT 'InstanceName', ISNULL(SERVERPROPERTY('InstanceName'), 'MSSQLSERVER') UNION ALL SELECT 'IsClustered', SERVERPROPERTY('IsClustered') UNION ALL SELECT 'IsFullTextInstalled', SERVERPROPERTY('IsFullTextInstalled') UNION ALL SELECT 'IsIntegratedSecurityOnly', SERVERPROPERTY('IsIntegratedSecurityOnly') UNION ALL SELECT 'IsSingleUser', SERVERPROPERTY('IsSingleUser') UNION ALL SELECT 'LCID', SERVERPROPERTY('LCID') UNION ALL SELECT 'LicenseType', SERVERPROPERTY('LicenseType') UNION ALL SELECT 'MachineName', SERVERPROPERTY('MachineName')

UNION ALL SELECT 'NumLicenses', SERVERPROPERTY('NumLicenses') UNION ALL SELECT 'ProcessID', SERVERPROPERTY('ProcessID') UNION ALL SELECT 'ProductVersion', SERVERPROPERTY('ProductVersion') UNION ALL SELECT 'ProductLevel', SERVERPROPERTY('ProductLevel') UNION ALL SELECT 'ResourceLastUpdateDateTime', SERVERPROPERTY('ResourceLastUpdateDateTime') UNION ALL SELECT 'ResourceVersion', SERVERPROPERTY('ResourceVersion') UNION ALL SELECT 'ServerName', SERVERPROPERTY('ServerName') UNION ALL SELECT 'SqlCharSet', SERVERPROPERTY('SqlCharSet') UNION ALL SELECT 'SqlCharSetName', SERVERPROPERTY('SqlCharSetName') UNION ALL SELECT 'SqlSortOrder', SERVERPROPERTY('SqlSortOrder') UNION ALL SELECT 'SqlSortOrderName', SERVERPROPERTY('SqlSortOrderName')

SQL Server - Backup y restore Si tu ya tienes una base en PRODUCCION y resulta que hiciste cambios de estructura de tablas, modificaste algunos objetos (procedures, vistas, funciones, etc.), NO PUEDES hacer un BACKUP - RESTORE, ya que se perderian los datos que tienes en tu base productiva. Debes hacer un PLAN DE MIGRACION, en la cual, montes tu nueva base (con otro nombre), pases los datos actuales de tu base productiva a tu nueva base, cambies el nombre a tu base productiva y renombres la base por la que vas a substituir. No sin antes, haber hecho pruebas de QA Como veras, no es tan trivial.

SQL Server - Problema en una tabla de la base uenos días Necesito solucionar este error que tengo en una tabla de mi base de dato: Msg 824, Level 24, State 2, Line 1 SQL Server detected a logical consistency-based I/O error:... ¿Cómo solucionar este problema? Gracias Rta. …….DBCC CHECKTABLE

Exportar resultado de una Consulta a un archivo .SQL Si estás usando autenticación integrada de windows puedes hacer esto:

1

bcp "Select IdProducto,NombreProducto From MYBD.dbo.Productos" queryout "D:\Bases\myprods.txt" -T -c Eso como verás te creará el archivo myprods.txt en la carpeta Bases en la unidad D:

Calcular cuantas personas tiene mas de 31 años en SQL Server SELECT count(*) as Total FROM Tabla WHERE edad>31

OTRAS ANOTACIONES UTILES Declare @NumOperador int, @FechaDesde datetime, @FechaHasta datetime set @FechaDesde='2017-07-03 00:00:00.000' set @FechaHasta='2017-07-12 00:00:00.000' set @NumOperador=452127 SELECT NumOperador, DiasDescansados = COUNT(DISTINCT FechaDescanso) FROM FechasDescansos GROUP BY NumOperador;

Varios update en un mismo procedimiento almacenado El problema al que me enfrento es el siguiente, quiero realizar varios update dentro de un procedimiento almacenado, pero solo me ejecuta el primero. Os muestro el codigo para que vean como lo hago. Rta. Es porque tienes varios begin y end, estos delimitan las instrucciones del procedimiento, solo deberías tener el begin al principio y el end hasta el final. Tienes que quitar los que tienes en medio. Se debe corregir esto aca: Y agrego, reemplaza tu instruccion IN(consulta) Por EXISTS ALTER PROCEDURE [dbo].[TRAGSEGA_ORDENES]

@fechadesde AS datetime AS

BEGIN select COCOEX AS 'SUBEXPLOTACION',CONREG,COFEAC,EXESPE,OPTIPR,prdesc,OPTICS,santicos.csdesc as 'desc tipo',OPCOSA,sib_sibconsa.csdesc,CONUME,opdeta,coobse,COFECA,conumu FROM DIL_CORDEN

INNER JOIN SIB_SIBEXPLO ON COCOEX=EXCOEX left JOIN DIL_ORDPEN ON CONREG=OPNREG left JOIN SANTIPRO ON opTIPR = PRPROC left join santicos on optics = cstics AND optipr=csproc left join sib_sibconsa on opcosa = cscodi AND opcoes=csespe where COFECA >convert(datetime,@fechadesde,103) AND EXESPE IN ('01','03','04','23','24','25','82') AND SUBSTRING(CONREG,5,1)'3' UNION select COCOEX AS 'SUBEXPLOTACION',CONREG,COFEAC,EXESPE,OPTIPR,prdesc,OPTICS,santicos.csdesc as 'desc tipo',OPCOSA,sib_sibconsa.csdesc,CONUME,opdeta,coobse,COFECA,conumu FROM DIL_CORDEN_o INNER JOIN SIB_SIBEXPLO ON COCOEX=EXCOEX left JOIN DIL_ORDPEN_o ON CONREG=OPNREG left JOIN SANTIPRO ON opTIPR = PRPROC left join santicos on optics = cstics AND optipr=csproc left join sib_sibconsa on opcosa = cscodi AND opcoes=csespe where COFECA >convert(datetime,@fechadesde,103) AND EXESPE IN ('01','03','04','23','24','25','82') AND SUBSTRING(CONREG,5,1)'3' ORDER BY CONREG END BEGIN UPDATE JSF_DIL_CORDEN SET GRABADO = CONCAT('Grabado: ',CONVERT(varchar(10),getdate(),103)) where CONREG in (select distinct CONREG FROM DIL_CORDEN INNER JOIN SIB_SIBEXPLO ON COCOEX=EXCOEX left JOIN DIL_ORDPEN ON CONREG=OPNREG left JOIN SANTIPRO ON opTIPR = PRPROC left join santicos on optics = cstics AND optipr=csproc left join sib_sibconsa on opcosa = cscodi AND opcoes=csespe where COFECA >convert(datetime,@fechadesde,103) AND EXESPE IN ('01','03','04','23','24','25','82') AND SUBSTRING(CONREG,5,1)'3' ) /*Actualizo el campo isGrabada a 1*/ update JSF_DIL_CORDEN set ISGRABADA = 1 where GRABADO in (select GRABADO from JSF_DIL_CORDEN where GRABADO like '%Grabado%') END BEGIN UPDATE JSF_DIL_CORDEN_O SET GRABADO = CONCAT('Grabado: ',CONVERT(varchar(10),getdate(),103)) where CONREG in (select distinct CONREG

FROM DIL_CORDEN_O INNER JOIN SIB_SIBEXPLO ON COCOEX=EXCOEX left JOIN DIL_ORDPEN ON CONREG=OPNREG left JOIN SANTIPRO ON opTIPR = PRPROC left join santicos on optics = cstics AND optipr=csproc left join sib_sibconsa on opcosa = cscodi AND opcoes=csespe where COFECA >convert(datetime,@fechadesde,103) AND EXESPE IN ('01','03','04','23','24','25','82') AND SUBSTRING(CONREG,5,1)'3' ) END GO

Ayuda en consulta de dos tablas SELECT * FROM CLIENTE cte WHERE NOT EXISTS(SELECT * FROM FACTURA fa WHERE fa.clienteid = cte.clientei Quiere decir aca: Dame, todos los clientes que NO existan en factura Que bueno que le funciono, el EXISTS (solo), es lo contrario del NOT EXISTS

Ya he instalado el SQL Server Express. Y ahora, ¿qué? Debes encontrar la consola de administracion que se llama SQL SERVER MANAGEMENT STUDIO, ahora que si no la tienes, pues bajala: https://www.microsoft.com/es-mx/download/details.aspx?id=8961 Tambien deberas verificar que VERSION bajaste, recuerda que estamos en la 2016 y probando la 2017 NVE CTP Saludos puedes bajar el MANAGEMENT STUDIO por separado.

https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

Error de restauración "La base está en uso" Buenos días Foro Espero no distraerlos con mi pregunta pero...... ¿Cómo puedo solucionar cuando quiero restaurar una base y que no Responda LA BASE ESTA EN USO....???

Rta. Sacar a TODOS tus usuarios y dejarla en SINGLE_USER ALTER DATABASE tubase SET SINGLE_USER WITH ROLLBACK IMMEDIATE ¿Qué comando utilizo para volverla multisuario?? ALTER DATABASE tubase SET MULTI_USER

Está bien programado el Procedure que expongo abajo?? ALTER procedure [dbo].[Restaura_CopiaSeg] AS ALTER DATABASE Stock_SGB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; go Restore Database Stock_SGB From Disk ='E:\Cliente\SGB\Base_SGB\BaseSGB.Bak' With Replace

ALTER DATABASE Stock_SGB SET MULTI_USER; go

Esto es lo que me hace falta para poder restaurar la base luego de una copia de seguridad Pero me arroja este error Mens. 3102, Nivel 16, Estado 1, Línea 2 RESTORE no puede procesar la base de datos 'Stock_SGB' porque está en uso en esta sesión. Se recomienda utilizar la base de datos master para realizar esta operación. Mens. 3013, Nivel 16, Estado 1, Línea 2 Fin anómalo de RESTORE DATABASE. Si intentas hacerlo en la misma base, pues es como tratar de quitar el techo de una habitacion, estando parada en el. USE MASTER GO .........................

ANOTACIONES ESPECIALES declare @numOperador int, @FechaDesde datetime, @FechaHasta datetime set @FechaDesde='2017-05-01 00:00:00.000' set @FechaHasta='2017-06-30 00:00:00.000' set @numOperador=0

Consulta SQL de fechas en rango inclusive SELECT * FROM bitacora where id_sitio in ('1','2') and fecha between '2017-06-29 00:00:00' and '2017-07-01 23:59:59';

ANOTACIONES ESPECIALES CREATE TABLE Origen( Id_Origen int identity(1,1) primary key, Id_Ciudad int not null, Fecha datetime FOREIGN KEY (Id_Ciudad) REFERENCES Ciudad(Id_ciudad)) Datos que le insertan: INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (1,'2012-03-02 09:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (1,'2012-03-02 10:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (2,'2012-03-02 09:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (2,'2012-03-02 10:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (3,'2012-03-02 11:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (3,'2012-03-02 12:00:00') INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (4,'2012-03-02 13:00:00') INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (4,'2012-03-02 14:00:00') INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (5,'2012-03-02 10:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (5,'2012-03-02 11:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (6,'2012-03-02 11:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (6,'2012-03-02 12:00:00') INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (7,'2012-03-02 13:00:00') INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (7,'2012-03-02 14:00:00') INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (8,'2012-03-02 10:00:00')* INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (8,'2012-03-02 11:00:00')*

SELECT V.Id_Vuelo as Numero_Vuelo, count(T.Id_Tripulacion) as Núm_Trip FROM Vuelo V, Tripulacion T, Origen O WHERE O.Fecha >= '20120101 00:00:00:001' AND O.Fecha = o 0 THEN SUBSTRING(dato, 1,CHARINDEX('-', dato)-1) else dato end FROM #QuitarGuion

SQL Server - Relaciones con suma SELECT tb.Codigo, tb.Descripcion, SUM(ta.[Cantidad Vendida]) as CantidadVendida from tablaa ta inner join tablab tb on tb.codigo = ta.codigo group by tb.Codigo, tb.Descripcion

Mas antiguo y mas reciente SELECT top 1 [numero de orden], max[fecha de factura] as "Fecha factura" FROM tutabla group by [numero de orden] order by 2 desc --- o asc, dependiendo

CONCATENA CAMPOS EN UNA CONSULTA select concat('Curso de ',C.TITULO,', impartido por ',P.NOMBRE,' ',P.APELLIDOS) CURSOS from CURSOS C, PROFESORES P where C.ID_PROFE = P.ID_PROFE

DUPLICAR UNA TABLA use BaseWebKardex SELECT * INTO dbo.tblR_HLA_007_Repet FROM dbo.tblR_HLA_007 No se lleva las claes ni los constraints Ahora,

Para duplicar una tabla, podemos hacer varias cosas, copiar sólo la estructura: SELECT * Into DestinationTableName From SourceTableName Where 1 = 2

SELECT UNION http://www.sql-server-helper.com/error-messages/msg-104.aspx SELECT [FirstName] + [LastName] AS [FullName] FROM [dbo].[Employees] UNION SELECT [FirstName] + [LastName] AS [FullName] FROM [dbo].[Managers] ORDER BY [LastName]

Dado que la columna LastName no forma parte de la salida, aunque forma parte de una de las columnas de la lista SELECT, se encontrará el siguiente error: Servidor: Msg 104, Nivel 15, Estado 1, Línea 3 Los elementos ORDER BY deben aparecer en la lista de selección si la instrucción contiene un operador UNION.

Para evitar este error, simplemente quite la cláusula ORDER BY de su sentencia SELECT. Si realmente necesita ordenarla por una columna en SELECT [FirstName] + [LastName] AS [FullName], [LastName] FROM [dbo].[Employees] UNION SELECT [FirstName] + [LastName] AS [FullName], [LastName] FROM [dbo].[Managers] ORDER BY [LastName]

Si no desea que la columna adicional en su salida, puede poner la instrucción SELECT con el UNION en una sub-consulta, de la siguiente manera: SELECT [FullName] FROM ( SELECT [FirstName] + [LastName] AS [FullName], [LastName] FROM [dbo].[Employees] UNION SELECT [FirstName] + [LastName] AS [FullName], [LastName] FROM [dbo].[Managers]) A ORDER BY [LastName]

MENSAJES DE ERROR SQL SERVER - PÁGINA http://www.sql-server-helper.com/error-messages/msg-104.aspx

Sena empleo Público https://simo.cnsc.gov.co/#dashboardciudadano

scabino2017 Misena2017

ENLACES DE INTERES: http://www.coomeva.com.co/publicaciones.php?id=32653

RE:SELECT campos llenos, no nulos. Not null Select * from Categoria where idCategoria=2 and Not isnull(DescripcionCategoria) Ya probe el select que indicas pero me sale: Mens. 174, Nivel 15, Estado 1, Línea 1 La función isnull requiere al menos 2 argumentos.

Ahora, ojo: Para hacer una descriminacion de tus campos con NULL, puedes hacerlo en el where. WHER myCampo IS NOT NULL Bueno queridos compañeros, mi experiencia es que para que esto funcione debemos tomar en cuenta que si hay registros con valor nulo(.NULL.) lo correcto es:

Select * from tabla where !isNull(campo), cualquier duda mandame mas datos a mi correo y con gusto te regreso la respuesta.