Useful MS SQL Queries
Table of Contents
Find Tables by Column Name
How to search column names in all tables that have a string.
Solution by Vikrant in a Stack Overflow post here.
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%Code%'
ORDER BY TableName
,ColumnName;
Pagination
SELECT UserId,
FirstName,
LastName,
BirthDate
FROM [dbo].[Users]
ORDER BY [SortOrder] DESC
OFFSET 5 * 7 ROWS
FETCH NEXT 5 ROWS ONLY;
Finding Duplicate Records
SELECT
Username,
COUNT(Username)
FROM
Users
GROUP BY Username
HAVING COUNT(Username) > 1;
Finding Average Age
SELECT AVG(DATEDIFF(m, BirthDate, GETDATE())/12) as Age
FROM Users
SELECT YEAR(DATEADD(DAY, AVG(DATEDIFF(DAY, '1900-01-01', BirthDate)), '1900-01-01')) as AverageAge
FROM Users
Gets the average age by years old
SELECT AVG(DATEDIFF(m, BirthDate, GETDATE())/12) as Age
FROM Users
Ranking top 10’s by Month
SELECT rownum,
MonthValue,
Category,
CategoryCount
,RANK () OVER (
PARTITION BY MonthValue
ORDER BY CategoryCount DESC
) count_rank
FROM SomeTopTenTable

Create new table with specific data/columns from another table
SELECT TOP(20) Id, Username, FirstName, LastName, Gender
INTO users
FROM RandomUsers
Get a count with Group By, between two dates.
DECLARE @EventId INT = 1;
select m.EventId, m.Name, count(u.ChosenContestantId) as Votes
from Contestants m
left join VotingTbl u on m.EventId = u.EventId
where u.ChosenContestantId = m.Id
and m.EventId = @EventId
and u.DateRecorded between CONVERT(DATETIME, '2020-01-01') and CONVERT(DATETIME,'2020-01-31')
group by m.EventId, m.Name, u.ChosenContestantId
order by count(u.ChosenContestantId) desc
List all the columns of a table
List all columns by table
select schema_name(tab.schema_id) as schema_name,
tab.name as table_name,
col.column_id,
col.name as column_name,
t.name as data_type,
col.max_length,
col.precision
from sys.tables as tab
inner join sys.columns as col
on tab.object_id = col.object_id
left join sys.types as t
on col.user_type_id = t.user_type_id
order by schema_name,
table_name,
column_id;
Search Functions/Stored Procedures
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE upper(ROUTINE_DEFINITION) LIKE '%SICK%'
AND ROUTINE_TYPE='PROCEDURE'
ORDER BY ROUTINE_NAME
Get Performance Statistics
Get performance statistics with statistics io. This can help determine what kind of index should be applied to a certain table.
set statistics io on
Example
set statistics io on
SELECT UserId, FirstName, LastName, Title
FROM Users
WHERE UserId = 212
Then click on the Messages Tab in SSMS

How to Declare a Variable
DECLARE @searchStr AS VARCHAR(100) = '%thomas%';
SELECT ID, FirstName, LastName, Title, Email, Description, Col1, Col2
FROM Users
WHERE FirstName like @searchStr
OR LastName like @searchStr
OR Title like @searchStr
OR Email like @searchStr
OR Description like @searchStr
OR Col1 like @searchStr
OR Col2 like @searchStr;
Search All Stored Procedures – Text Search
How to search for text in all stored procedures in a single database.
SELECT OBJECT_NAME(object_id), * FROM sys.sql_modules WHERE definition LIKE '%YOUR_SEARCH_STRING%'
You must be logged in to post a comment.