Sólo un empuje, pero aquí es otra manera de escribir FizzBuzz :) 100 filas es suficiente para mostrar el estado CON, calculo .
;WITH t100 AS (
SELECT n=number
FROM master..spt_values
WHERE type='P' and number between 1 and 100
)
SELECT
ISNULL(NULLIF(
CASE WHEN n % 3 = 0 THEN 'Fizz' Else '' END +
CASE WHEN n % 5 = 0 THEN 'Buzz' Else '' END, ''), RIGHT(n,3))
FROM t100
Pero el verdadero poder detrás CON (conocida como tabla comunes Expresión http://msdn.microsoft.com/en-us/library/ms190766.aspx "CTE") en SQL Server 2005 y arriba es la recursividad, ya que por debajo de donde la mesa se construye a través de iteraciones agregándose a la mesa virtual cada vez.
;WITH t100 AS (
SELECT n=1
union all
SELECT n+1
FROM t100
WHERE n < 100
)
SELECT
ISNULL(NULLIF(
CASE WHEN n % 3 = 0 THEN 'Fizz' Else '' END +
CASE WHEN n % 5 = 0 THEN 'Buzz' Else '' END, ''), RIGHT(n,3))
FROM t100
para ejecutar una consulta de base de datos similar en todos, puede utilizar los indocumentados sp_msforeachdb. Se ha mencionado en otra respuesta, pero es sp_msforeachdb, no sp_foreachdb.
Tenga cuidado al usarlo, ya que algunas cosas no son lo que espera. Considere este ejemplo
exec sp_msforeachdb 'select count(*) from sys.objects'
En lugar de los cargos de los objetos dentro de cada base de datos, obtendrá el mismo número reportado, comenzará el de la base de datos actual. Para evitar esto, siempre "use" la base de datos primero. Tenga en cuenta los corchetes para calificar nombres de bases de datos de varias palabras.
exec sp_msforeachdb 'use [?]; select count(*) from sys.objects'
Para su consulta específica sobre cómo completar una tabla de conteo, puede usar algo como el siguiente. No estoy seguro acerca de la columna FECHA, por lo que esta tabla de recuento solo tiene las columnas DBNAME e IMG_COUNT, pero espero que lo ayude.
create table #tbl (dbname sysname, img_count int);
exec sp_msforeachdb '
use [?];
if object_id(''tbldoc'') is not null
insert #tbl
select ''?'', count(*) from tbldoc'
select * from #tbl
'WITH' no le ayudará en esta tarea. ¿Están todas las bases de datos en la misma instancia? ¿Cuál es el código que está ejecutando en todos ellos? –
Para citar a Inigo Montoya de [The Princess Bride] (http://www.imdb.com/title/tt0093779/): "Sigues usando esa palabra. No creo que signifique lo que piensas que significa". :-) –
Martin, sí, están en la misma instancia. cada base de datos tiene la misma tabla. Deseo utilizar la función suma para recopilar todos los datos de las tablas y hacer que el nombre de cada base de datos se llene en una tabla temporal con las siguientes columnas: DBNAME, IMG_COUNT, DATE.El nombre de la tabla es tbldoc o dbo.tbldoc. Cada base de datos contiene esta tabla y todas tienen las mismas columnas que deseo consultar. ¿Qué haría para acelerar esto, en lugar de usar un cursor o while loop? – Jeff