Bara en peta, men här är ett annat sätt att skriva FizzBuzz :) 100 rader räcker för att visa WITH-satsen, tror jag.
;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
Men den verkliga kraften bakom WITH (känd som Common Table Expression http://msdn.microsoft.com/en-us/library/ms190766.aspx "CTE") i SQL Server 2005 och högre är Rekursionen, som nedan där tabellen byggs upp genom iterationer som läggs till i den virtuella tabellen varje gång.
;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
För att köra en liknande fråga i alla databaser kan du använda den odokumenterade sp_msforeachdb . Det har nämnts i ett annat svar, men det är sp_msforeachdb, inte sp_foreachdb.
Var dock försiktig när du använder den, eftersom vissa saker inte är vad du förväntar dig. Tänk på det här exemplet
exec sp_msforeachdb 'select count(*) from sys.objects'
Istället för antalet objekt inom varje DB, kommer du att få SAMMA räkning rapporterad, börja den för den aktuella DB. För att komma runt detta, "använd" alltid databasen först. Notera hakparenteserna för att kvalificera databasnamn med flera ord.
exec sp_msforeachdb 'use [?]; select count(*) from sys.objects'
För din specifika fråga om att fylla i en sammanräkningstabell kan du använda något som nedan. Osäker på kolumnen DATE, så den här sammanställningstabellen har bara kolumnerna DBNAME och IMG_COUNT, men hoppas att den hjälper dig.
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