October 21, 2011 at 1:33 am
Hi All,
DECLARE @a NVARCHAR(MAX)
DECLARE @a Cnt Int
DECLARE @tableName NVARCHAR(MAX)
SET @Cnt = 5
WHILE @Cnt >0
BEGIN
SET @tableName = (SELECT tableName from TableContainsAllTableName WHERE ID = Cnt)
SET @a = 'SELECT * FROM '+@tableName+'
-- Here I want to check that before executing above query data is present in above table or not
-- i.e is @tableName table Empty if yes then don't show result if no then show result
EXECUTE (@a)
Need Help ASAP
October 21, 2011 at 2:02 am
Hi sachin,
Post me the correct and full script.
Muthukkumaran Kaliyamoorthy
https://www.sqlserverblogforum.com/
October 21, 2011 at 2:20 am
set @a = 'if exists(select top 1 * from ' + @tableName +') select * from ' + @tableName
The code you have posted will not compile. Check before posting.
- arjun
https://sqlroadie.com/
October 21, 2011 at 2:39 am
Have a look
http://www.sqlservercentral.com/articles/Best+Practices/61537/
Muthukkumaran Kaliyamoorthy
https://www.sqlserverblogforum.com/
November 1, 2011 at 7:46 am
Thank you all that really helped me. 🙂
November 1, 2011 at 7:51 am
Hi all,
I've no knowledge of SQL or any other query language bu still I managed to write below query using MSDN.
I've completed my query but still it takes 1 to 2 hours to execute can you help me to improve performance of this query
Below query is used to search string in database and return row from that database.
-------------------------------------------------------------------------------------------------
SET NOCOUNT ON
CREATE TABLE #query (query NVARCHAR(MAX), id int)
DECLARE @STR_IP NVARCHAR(MAX)
DECLARE @T_NAME NVARCHAR(MAX)
DECLARE @T_NAME1 NVARCHAR(MAX)
DECLARE @C_NAME NVARCHAR(MAX)
DECLARE @a NVARCHAR(MAX)
DECLARE @a_Copy NVARCHAR(MAX)
DECLARE @Cnt Int
DECLARE @Result NVARCHAR(MAX)
DECLARE @query NVARCHAR(MAX)
SET @Result = NULL
SET @STR_IP = 'Enter string to search in database'
--SET @STR_IP = 'a'
CREATE TABLE #temp_all (TableName VARCHAR(MAX) , Column_Name VARCHAR(MAX), Coulumn_Type VARCHAR(MAX),Num Int)
INSERT INTO #temp_all (TableName ,Column_Name,Coulumn_Type,Num ) (SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE,ROW_NUMBER() OVER (ORDER BY TABLE_NAME) AS Int FROM INFORMATION_SCHEMA.COLUMNS)
SET @Cnt = (Select MAX(Num) FROM #temp_all)
SET @T_NAME = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
WHILE @Cnt > 0
BEGIN
SET @T_NAME1 = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
SET @C_NAME = (SELECT Column_Name FROM (SELECT Column_Name FROM #temp_all WHERE Num = @Cnt) as t)
SET @a = 'SELECT TOP 1 * from '+@T_NAME+' WHERE LOWER(CAST(['+@C_NAME+'] AS NVARCHAR(MAX))) LIKE LOWER('+''''+@STR_IP+''''+')'
SET @Cnt = @Cnt - 1
WHILE @T_NAME = @T_NAME1
BEGIN
SET @C_NAME = (SELECT Column_Name FROM (SELECT Column_Name FROM #temp_all WHERE Num = @Cnt) as t)
SET @a = @a + ' OR LOWER(CAST(['+@C_NAME+'] AS NVARCHAR(MAX))) LIKE LOWER('+''''+@STR_IP+''''+')'
SET @Cnt = @Cnt - 1
SET @T_NAME1 = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
END
SET @a_Copy = REPLACE(@a,'TOP 1','')
SET @a = 'IF EXISTS('+@a + ') '+ @a_Copy
execute (@a)
SET @T_NAME = @T_NAME1
END
DROP TABLE #temp_all
DROP TABLE #query
---------------------------------------------------------------------------------------------------------
November 1, 2011 at 8:52 am
I assume you trying to search every column of every table for a specific value? The nested while loops you have are horrible for performance but for this type of thing there is little else you can do.
Lowell posted a stored proc he has for this type of thing. Here is his version.
CREATE PROCEDURE sp_UGLYSEARCH
/*
--Purpose: to search every string column in a databasefor a specific word
--returns sql statement as a string which idnetifies the matching table
-- or when the optional parameter is used, the sql statement for the specific matching column.
--usage:
-- EXEC sp_UGLYSEARCH 'Provisional'
-- EXEC sp_UGLYSEARCH 'TEST'
-- creates one SQL for each table that actually has a match for the searched value i.e.
-- SELECT * FROM [ACACTSCR] WHERE [DESCRIP] LIKE '%TEST%' OR [TITLE] LIKE '%TEST%'
--optional parameter SEARCHBYCOLUMN
-- EXEC sp_UGLYSEARCH 'TEST',1
-- creates one SQL for each Column that actually has a match for the searched value i.e.
-- SELECT * FROM [dbo].[ACACTSCR] WHERE [DESCRIP] LIKE '%TEST%'
-- SELECT * FROM [dbo].[ACACTSCR] WHERE [TITLE] LIKE '%TEST%'
*/
@SEARCHSTRING VARCHAR(50),
@SEARCHBYCOLUMN INT = 0
AS
BEGIN
SET NOCOUNT ON
DECLARE @SQL VARCHAR(max),
@SCHEMANAME VARCHAR(100),
@TABLENAME VARCHAR(100),
@COLUMNNAME VARCHAR(100),
@COLZ VARCHAR(max)
CREATE TABLE #RESULTS(SCHEMANAME VARCHAR(100), TBLNAME VARCHAR(100),COLNAME VARCHAR(100),SQL VARCHAR(max))
SELECT
SCHEMA_NAME(schema_id) AS SCHEMANAME,
objz.name AS TBLNAME,
colz.name AS COLNAME,
TYPE_NAME(colz.user_type_id) AS DATATYPE
INTO #TEMP
FROM sys.objects objz
INNER JOIN sys.columns colz ON objz.object_id = colz.object_id
WHERE objz.type='U'
AND TYPE_NAME(colz.user_type_id) IN ('VARCHAR','NVARCHAR','CHAR','NCHAR')
AND colz.max_length >= LEN(@SEARCHSTRING) --smart: don't search varchar(1) columns for 'TEST' 4xmpl
ORDER BY TBLNAME,COLNAME
IF @SEARCHBYCOLUMN = 0
BEGIN
DECLARE C1 CURSOR FOR
SELECT SCHEMANAME,TBLNAME,COLNAME FROM #TEMP ORDER BY SCHEMANAME,TBLNAME,COLNAME
OPEN C1
FETCH NEXT FROM C1 INTO @SCHEMANAME,@TABLENAME,@COLUMNNAME
WHILE @@FETCH_STATUS <> -1
BEGIN
SET @COLZ=''
SELECT @COLZ = @COLZ + QUOTENAME(COLNAME) + ' LIKE ''%' + @SEARCHSTRING + '%'' OR ' FROM #TEMP WHERE TBLNAME=@TABLENAME
--@COLZ has a trailing 'OR ' which must be removed
SET @COLZ = SUBSTRING(@COLZ,1,LEN(@COLZ) -3)
--PRINT @COLZ
SET @SQL = 'IF EXISTS(SELECT * FROM ' + QUOTENAME(@SCHEMANAME) + '.' + QUOTENAME(@TABLENAME) + ' WHERE ' + @COLZ + ') INSERT INTO #RESULTS(TBLNAME,COLNAME,SQL) VALUES(''' + @TABLENAME + ''',''-'','' SELECT * FROM ' + QUOTENAME(@TABLENAME) + ' WHERE ' + REPLACE(@COLZ,'''','''''') + ''') ;'
--PRINT @SQL
EXEC (@SQL)
FETCH NEXT FROM C1 INTO @SCHEMANAME,@TABLENAME,@COLUMNNAME
END
CLOSE C1
DEALLOCATE C1
END
ELSE --@SEARCHBYCOLUMN <> 0
BEGIN
DECLARE C2 CURSOR FOR
SELECT SCHEMANAME,TBLNAME,COLNAME FROM #TEMP ORDER BY SCHEMANAME,TBLNAME,COLNAME
OPEN C2
FETCH NEXT FROM C2 INTO @SCHEMANAME,@TABLENAME,@COLUMNNAME
WHILE @@FETCH_STATUS <> -1
BEGIN
SET @SQL = 'IF EXISTS(SELECT * FROM ' + QUOTENAME(@SCHEMANAME) + '.' + QUOTENAME(@TABLENAME) + ' WHERE ' + QUOTENAME(@COLUMNNAME) + ' LIKE ''%' + @SEARCHSTRING + '%'')
INSERT INTO #RESULTS(SCHEMANAME,TBLNAME,COLNAME,SQL) VALUES(''' + @SCHEMANAME + ''',''' + @TABLENAME + ''',''' + @COLUMNNAME + ''',''
SELECT * FROM ' + QUOTENAME(@SCHEMANAME) + '.' + QUOTENAME(@TABLENAME) + ' WHERE ' + QUOTENAME(@COLUMNNAME) + ' LIKE ''''%' + @SEARCHSTRING + '%'''' '') ;'
PRINT @SQL
EXEC (@SQL)
FETCH NEXT FROM C2 INTO @SCHEMANAME,@TABLENAME,@COLUMNNAME
END
CLOSE C2
DEALLOCATE C2
END --@SEARCHBYCOLUMN <> 0
SELECT * FROM #RESULTS ORDER BY TBLNAME,COLNAME
END --PROC
GO
SELECT * FROM #RESULTS ORDER BY TBLNAME,COLNAME
END --PROC
GO
I created my version a number of years ago...it is also horrible on performance.
declare @table_name varchar(2000)
declare @sSQL nvarchar(4000)
declare @result varchar(20)
declare @column_name varchar(2000)
declare @SearchVal varchar(200)
set @SearchVal = '%your search val here%'
declare @ColName varchar (250)
set @ColName = '%use this if you want to limit to a naming convention on the columns to search (i.e. email)%'
declare SearchList cursor for
select distinct so.name,sc.name from syscolumns sc
inner join sysobjects so on sc.id = so.id
where sc.name like @ColName
and so.type = 'U'
open SearchList
fetch next from SearchList into @table_name, @column_name
while(@@fetch_status = 0)
begin
select @sSQL = 'if exists (select ''' + @table_name + ''' as TableName,' + @column_name + ' from ' + @table_name + ' where ' + @column_name + ' like ''' + @SearchVal + ''') select ''' + @table_name + ''' as TableName,' + @column_name + ' from ' + @table_name + ' where ' + @column_name + ' like ''' + @SearchVal + ''''
exec sp_executesql @sSQL
--select @ssql
fetch next from SearchList into @table_name, @column_name
end
close SearchList
deallocate SearchList
The bottom line is that you should NEVER use this type of thing on a production server. It is as slow as molasses on a frozen lake in Alaska in January. There is no way to make something this extensive run fast.
_______________________________________________________________
Need help? Help us help you.
Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.
Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.
Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/
November 1, 2011 at 12:45 pm
Here is a script that I use that also allows a replace:
/*
* CATEGORY: Script
* AUTHOR: Luiz Barros
* OBJECTIVE: Find and Replace a string in all string fields (char, varchar, etc) of all tables in the database
*
* PARAMETERS:
* @SearchChar is the string to be found. Use wildcard %
* @ReplaceChar is the string to replace occurrences of @SearchChar
* @Replace = 0 => search for @SearchChar; @Replace = 1 => Find and replace occurrences
*/
SET NOCOUNT ON
DECLARE @SearchChar VARCHAR(8000),
@ReplaceChar VARCHAR(8000),
@SearchChar1 VARCHAR(8000),
@Replace BIT
SET @Replace = 0
SET @SearchChar = '%JXK053%'
SET @ReplaceChar = 'JXK053'
IF @Replace = 1 AND (@SearchChar IS NULL OR @ReplaceChar IS NULL) BEGIN
PRINT 'Invalid Parameters' RETURN
END
SET @SearchChar1 = REPLACE(@SearchChar, '%', '')
DECLARE @sql VARCHAR(8000),
@ColumnName VARCHAR(100),
@TableName VARCHAR(100)
CREATE TABLE #T (TableName VARCHAR(100),
FieldName VARCHAR(100),
Value VARCHAR(MAX))
DECLARE db CURSOR LOCAL FOR
SELECT '[' + s.NAME + '].[' + b.Name + ']' AS TableName,
c.Name AS ColumnName
FROM sys.objects b, syscolumns c, sys.schemas s
WHERE c.id = b.OBJECT_ID --b.id
AND b.type = 'u'
AND c.xType IN (35, 99, 167, 175, 231, 239) -- string types
AND s.SCHEMA_ID = b.schema_id
ORDER BY b.name
OPEN db
FETCH NEXT FROM db INTO @TableName, @ColumnName
WHILE @@FETCH_STATUS = 0 BEGIN
IF @Replace = 0 SET @sql = 'INSERT #T SELECT '''+@TableName+''', ''' +@ColumnName+ ''', ['+@ColumnName+'] FROM '+@TableName+' WHERE ['+@ColumnName+'] LIKE '''+@SearchChar+''''
ELSE SET @sql = 'UPDATE '+@TableName+' SET ['+@ColumnName+'] = REPLACE(convert(varchar(max),['+@ColumnName+']),'''+@SearchChar1+''','''+@ReplaceChar+''') WHERE ['+@ColumnName+'] LIKE '''+@SearchChar+''''
EXEC(@sql)
PRINT @TableName+' - '+@ColumnName
FETCH NEXT FROM db INTO @TableName, @ColumnName
END
IF @Replace = 0
SELECT *
FROM #T
ORDER BY TableName
DROP TABLE #T
CLOSE db
DEALLOCATE db
I have never had any problems running this on a production database, but the databases I ran this on were relatively small and not a lot of transactions.
Thanks,
Jared
Jared
CE - Microsoft
May 28, 2014 at 4:09 am
SET NOCOUNT ON
CREATE TABLE #query (query NVARCHAR(MAX), id int)
DECLARE @STR_IP NVARCHAR(MAX)
DECLARE @T_NAME NVARCHAR(MAX)
DECLARE @T_NAME1 NVARCHAR(MAX)
DECLARE @C_NAME NVARCHAR(MAX)
DECLARE @T_CATALOG NVARCHAR(MAX)
DECLARE @T_SCHEMA NVARCHAR(MAX)
DECLARE @a NVARCHAR(MAX)
DECLARE @a_Copy NVARCHAR(MAX)
DECLARE @Cnt Int
DECLARE @Result NVARCHAR(MAX)
DECLARE @query NVARCHAR(MAX)
SET @Result = NULL
SET @STR_IP = '%operating%system%'
--SET @STR_IP = 'a'
CREATE TABLE #temp_all (TableCatalog VARCHAR(MAX) ,TableSchema VARCHAR(MAX) ,TableName VARCHAR(MAX) , Column_Name VARCHAR(MAX), Coulumn_Type VARCHAR(MAX),Num Int)
INSERT INTO #temp_all (TableCatalog,TableSchema,TableName,Column_Name,Coulumn_Type,Num )
(
SELECT TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE,ROW_NUMBER() OVER (ORDER BY TABLE_NAME) AS Int
FROM INFORMATION_SCHEMA.COLUMNS where DATA_TYPE IN('VARCHAR','NVARCHAR','CHAR','NCHAR','INT','bigint')
-- AND colz.max_length >= LEN(@SEARCHSTRING)
)
--select * from #temp_all
SET @Cnt = (Select MAX(Num) FROM #temp_all)
SET @T_NAME = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
WHILE @Cnt > 0
BEGIN
SET @T_NAME1 = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
SET @C_NAME = (SELECT Column_Name FROM (SELECT Column_Name FROM #temp_all WHERE Num = @Cnt) as t)
SET @T_CATALOG = (SELECT TableCatalog FROM (SELECT TableCatalog FROM #temp_all WHERE Num = @Cnt) as t)
SET @T_SCHEMA = (SELECT TableSchema FROM (SELECT TableSchema FROM #temp_all WHERE Num = @Cnt) as t)
SET @a = 'SELECT TOP 1 * , '''+@T_NAME+''' as TABLENAME from ['+@T_CATALOG+'].['+@T_SCHEMA+'].['+@T_NAME+'] WHERE LOWER(CAST(['+@T_CATALOG+'].['+@T_SCHEMA+'].['+@T_NAME+'].['+@C_NAME+'] AS NVARCHAR(MAX))) LIKE LOWER('+''''+@STR_IP+''''+')'
SET @Cnt = @Cnt - 1
SET @T_NAME1 = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
WHILE @T_NAME = @T_NAME1
BEGIN
SET @C_NAME = (SELECT Column_Name FROM (SELECT Column_Name FROM #temp_all WHERE Num = @Cnt) as t)
SET @a = @a + ' OR LOWER(CAST(['+@T_CATALOG+'].['+@T_SCHEMA+'].['+@T_NAME+'].['+@C_NAME+'] AS NVARCHAR(MAX))) LIKE LOWER('+''''+@STR_IP+''''+')'
SET @Cnt = @Cnt - 1
SET @T_NAME1 = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
END
SET @a_Copy = REPLACE(@a,'TOP 1','')
SET @a = 'IF EXISTS('+@a + ') '+ @a_Copy
execute (@a)
SET @T_NAME = @T_NAME1
END
DROP TABLE #temp_all
DROP TABLE #query
May 28, 2014 at 7:13 am
sachin.sakpal2009 26397 (5/28/2014)
SET NOCOUNT ON
CREATE TABLE #query (query NVARCHAR(MAX), id int)
DECLARE @STR_IP NVARCHAR(MAX)
DECLARE @T_NAME NVARCHAR(MAX)
DECLARE @T_NAME1 NVARCHAR(MAX)
DECLARE @C_NAME NVARCHAR(MAX)
DECLARE @T_CATALOG NVARCHAR(MAX)
DECLARE @T_SCHEMA NVARCHAR(MAX)
DECLARE @a NVARCHAR(MAX)
DECLARE @a_Copy NVARCHAR(MAX)
DECLARE @Cnt Int
DECLARE @Result NVARCHAR(MAX)
DECLARE @query NVARCHAR(MAX)
SET @Result = NULL
SET @STR_IP = '%operating%system%'
--SET @STR_IP = 'a'
CREATE TABLE #temp_all (TableCatalog VARCHAR(MAX) ,TableSchema VARCHAR(MAX) ,TableName VARCHAR(MAX) , Column_Name VARCHAR(MAX), Coulumn_Type VARCHAR(MAX),Num Int)
INSERT INTO #temp_all (TableCatalog,TableSchema,TableName,Column_Name,Coulumn_Type,Num )
(
SELECT TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE,ROW_NUMBER() OVER (ORDER BY TABLE_NAME) AS Int
FROM INFORMATION_SCHEMA.COLUMNS where DATA_TYPE IN('VARCHAR','NVARCHAR','CHAR','NCHAR','INT','bigint')
-- AND colz.max_length >= LEN(@SEARCHSTRING)
)
--select * from #temp_all
SET @Cnt = (Select MAX(Num) FROM #temp_all)
SET @T_NAME = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
WHILE @Cnt > 0
BEGIN
SET @T_NAME1 = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
SET @C_NAME = (SELECT Column_Name FROM (SELECT Column_Name FROM #temp_all WHERE Num = @Cnt) as t)
SET @T_CATALOG = (SELECT TableCatalog FROM (SELECT TableCatalog FROM #temp_all WHERE Num = @Cnt) as t)
SET @T_SCHEMA = (SELECT TableSchema FROM (SELECT TableSchema FROM #temp_all WHERE Num = @Cnt) as t)
SET @a = 'SELECT TOP 1 * , '''+@T_NAME+''' as TABLENAME from ['+@T_CATALOG+'].['+@T_SCHEMA+'].['+@T_NAME+'] WHERE LOWER(CAST(['+@T_CATALOG+'].['+@T_SCHEMA+'].['+@T_NAME+'].['+@C_NAME+'] AS NVARCHAR(MAX))) LIKE LOWER('+''''+@STR_IP+''''+')'
SET @Cnt = @Cnt - 1
SET @T_NAME1 = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
WHILE @T_NAME = @T_NAME1
BEGIN
SET @C_NAME = (SELECT Column_Name FROM (SELECT Column_Name FROM #temp_all WHERE Num = @Cnt) as t)
SET @a = @a + ' OR LOWER(CAST(['+@T_CATALOG+'].['+@T_SCHEMA+'].['+@T_NAME+'].['+@C_NAME+'] AS NVARCHAR(MAX))) LIKE LOWER('+''''+@STR_IP+''''+')'
SET @Cnt = @Cnt - 1
SET @T_NAME1 = (SELECT TableName FROM (SELECT TableName FROM #temp_all WHERE Num = @Cnt) as t)
END
SET @a_Copy = REPLACE(@a,'TOP 1','')
SET @a = 'IF EXISTS('+@a + ') '+ @a_Copy
execute (@a)
SET @T_NAME = @T_NAME1
END
DROP TABLE #temp_all
DROP TABLE #query
Is this any different than what you posted 3 years ago? It looks pretty much the same. Is there a reason you posted this suddenly today? Do you need help with something?
_______________________________________________________________
Need help? Help us help you.
Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.
Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.
Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/
June 5, 2014 at 9:43 am
sachin.sakpal2009 26397 (6/5/2014)
NULL<Product>
<Scan_Objects$1893>
Back up Administration Server data
Device Control
Download updates to the repository
File Anti-Virus
Find vulnerabilities and application updates
Protection
Update
Virus Scan
Web Anti-Virus
Web Control
What is this? It seems you need help with something but you aren't providing any details as to what the question/issue is. Just randomly posting a list of values isn't providing any clarity. You posted a really ugly dynamic sql in a loop code piece a week ago and then a list of seemingly random values. I can help you but I don't know what the question is.
_______________________________________________________________
Need help? Help us help you.
Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.
Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.
Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/
June 5, 2014 at 12:34 pm
I think it was spam...
Jared
CE - Microsoft
Viewing 12 posts - 1 through 12 (of 12 total)
You must be logged in to reply to this topic. Login to reply