Solo un toque, pero aquí hay otra forma de escribir FizzBuzz :) 100 filas son suficientes para mostrar la declaración CON, creo.
;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 poder real detrás de WITH (conocido como Common Table Expression http://msdn.microsoft.com/en-us/library/ms190766.aspx "CTE") en SQL Server 2005 y superior es la Recursión, como se muestra a continuación, donde la tabla se crea a través de iteraciones que se agregan a la tabla 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 similar en todas las bases de datos, puede usar el sp_msforeachdb no documentado . Se ha mencionado en otra respuesta, pero es sp_msforeachdb, no sp_foreachdb.
Sin embargo, 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 conteos de objetos dentro de cada base de datos, obtendrá el MISMO conteo informado, comience con el de la base de datos actual. Para evitar esto, siempre "utilice" 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 lo siguiente. No estoy seguro acerca de la columna DATE, por lo que esta tabla de conteo solo tiene las columnas DBNAME e IMG_COUNT, pero espero que te 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