SQLDCH (4/12/2013)
I have a table that stores a tablename, the last time the table was accessed and when that data was put into the table:CREATE TABLE [dbo].[LastSelectCheck](
[TableName] [nvarchar](128) NULL,
[LastSelect] [datetime] NULL,
[RunDate] [datetime] NOT NULL,
[Server] [nvarchar](128) NULL
) ON [PRIMARY]
GO
It’s populated every night by a select from sys.dm_db_index_usage_stats.
My question: I’d like to run a query that shows the last select over a week’s time, like this:
Tablename day1 day2 day3
--------------------------------------------------------------------------------
tblOrder 2013-04-08 NULL 2013-04-10
tblOrder2 2013-04-08 2013-04-09 NULL
I realize I can do this thru a series of CTE, temp tables or joins but it seems that there’s something more elegant out there. I tried PIVOT but it doesn’t look like it’ll work here as I'm not aggregating and the columns are not items from the tables.
Any advice? TIA.
Sample data:
insert into LastSelectCheck2 values ('tblOrder', NULL, '2013-04-08', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder2', '2013-04-08', '2013-04-08', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder3', NULL, '2013-04-08', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder4', '2013-04-08', '2013-04-08', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder', '2013-04-09', '2013-04-09', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder2', '2013-04-09', '2013-04-09', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder3', '2013-04-09', '2013-04-09', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder4', '2013-04-09', '2013-04-09', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder', '2013-04-10', '2013-04-10', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder2', '2013-04-10', '2013-04-10', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder3', NULL, '2013-04-10', 'MyServer1')
insert into LastSelectCheck2 values ('tblOrder4', NULL, '2013-04-10', 'MyServer1')
I don't know if this query can be useful for you:
SELECT (TableName+''+ISNULL(CONVERT(CHAR(10),LastSelect,120 ),' ')+''+ISNULL(CONVERT(CHAR(10),(RunDate),120),' ')+''+[Server]+' ')TEXT,TableName INTO #TEST
FROM LastSelectCheck2
select TEXT INTO #TEXTS
from #test
order by TABLENAME
SELECT DISTINCT 'Table name day1day2day3'
union all
select TEXT
from #TEXTS
Best Regards