Como analista de datos, sé lo desafiante que puede ser trabajar con grandes volúmenes de información y encontrar formas eficientes de manejar y analizar los datos. Por eso, quiero ofrecerles un pequeño código que puede ser de utilidad en ciertos escenarios.
El siguiente script está diseñado para identificar y seleccionar tablas en una base de datos que contienen más de 10 filas donde exista una columna con el nombre 'Amount'. Esto puede ser útil cuando necesitas realizar análisis específicos o depurar conjuntos de datos extensos.
DECLARE cursorRow CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
DECLARE @tableName nvarchar(100)
DECLARE @query nvarchar(max)
IF OBJECT_ID('tempdb..#tables') IS NOT NULL
DROP TABLE #tables
CREATE TABLE #tables(tablename varchar(100))
OPEN cursorRow
FETCH NEXT FROM cursorRow INTO @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
-- Verifica si la columna 'Amount' existe en la tabla
IF EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tableName AND COLUMN_NAME = 'Amount'
)
BEGIN
-- Construye la consulta para contar las filas con la columna 'Amount'
SET @query = N'
IF (SELECT COUNT(*) FROM [' + @tableName + ']) > 10
BEGIN
INSERT INTO #tables (tablename) VALUES (''' + @tableName + ''')
END
'
EXEC sp_executesql @query
END
FETCH NEXT FROM cursorRow INTO @tableName
END
CLOSE cursorRow
DEALLOCATE cursorRow
SELECT * FROM #tables ORDER BY tablename
DROP TABLE #tables
También te dejo por aquí un código que simplemente lista todas aquellas tablas que tienen más de 10 filas.
DECLARE cursorRow CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
DECLARE @tableName nvarchar(100)
DECLARE @query nvarchar(max)
IF OBJECT_ID('tempdb..#tables') IS NOT NULL
DROP TABLE #tables
CREATE TABLE #tables(tablename varchar(100))
OPEN cursorRow
FETCH NEXT FROM cursorRow INTO @tableName
DECLARE @count INT
WHILE @@FETCH_STATUS = 0
BEGIN
SET @query = 'SELECT @count = COUNT(*) FROM [' + @tableName + ']'
EXEC sp_executesql @query, N'@count int out', @count OUT
IF @count > 10
BEGIN
INSERT INTO #tables (tablename) VALUES (@tableName)
END
FETCH NEXT FROM cursorRow INTO @tableName
END
CLOSE cursorRow
DEALLOCATE cursorRow
SELECT * FROM #tables ORDER BY tablename
DROP TABLE #tables
Puedes usar este código como punto de partida y adaptarlo según tus necesidades. ¡Espero que te sea de utilidad!