Have you ever tried to get the row count of a table by a simple "SELECT COUNT(*)" statement, and been stupefied by how long it took to return the result? This article demonstrates how to use sysindexes to speed up that row count:
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('table_name') AND indid < 2
Monday, August 23, 2010
Params for Pivoting
So let's add a second parameter to indicate the format of the return set. The default value will return it as
AttribName AttribValue Row Number
---------- ----------- ----------
and the other value will return the fully-pivoted data set:
AttribName AttribValue_Row1 ... AttribValue_RowN
---------- ---------------- ... ----------------
AttribName AttribValue Row Number
---------- ----------- ----------
and the other value will return the fully-pivoted data set:
AttribName AttribValue_Row1 ... AttribValue_RowN
---------- ---------------- ... ----------------
Thursday, August 19, 2010
How to Pivot
How about we construct a CTE using dynamic SQL, and we pivot the attribute values by constructing a series of SELECT...UNION SELECT statements, so that we have one SELECT per attribute???
PivotTable SQL Code
I want to write TSQL code that will pivot any given table. The way I imagine it, is that I implement this code as a stored proc, which accepts a table name as parameter. It returns a result set comprising the perfect pivot of that table. The result set need not be named, but could be inserted into a table. It will have to convert all values to varchar (or char for easier printing; perhaps can have a switch as a parameter).
Structure of return set:
AttribName AttribValue_Row1 ... AttribValue_RowN
---------- ---------------- ... ----------------
So, how do we do this? We can easily pivot the column names into values for 'AttribName' by pulling from Sys.Columns view. The problem then becomes how do we pivot the attribute values into the genericized column?
We need to first pivot the data into this structure:
AttribName AttribValue Row Number
---------- ----------- ----------
Then we can self join the data set as many times as there are rows in the original data. Or not.
Structure of return set:
AttribName AttribValue_Row1 ... AttribValue_RowN
---------- ---------------- ... ----------------
So, how do we do this? We can easily pivot the column names into values for 'AttribName' by pulling from Sys.Columns view. The problem then becomes how do we pivot the attribute values into the genericized column?
We need to first pivot the data into this structure:
AttribName AttribValue Row Number
---------- ----------- ----------
Then we can self join the data set as many times as there are rows in the original data. Or not.
Stairway to Database Design
"Designing a database is very easy to do, but hard to do well. There are many databases that have been built in the world that do not meet the needs of the applications they support.
The fundamentals of design are often not taught to developers or DBAs when they are given the task of building tables. Many people do not understand the logic used to decide what columns to use, the data types for each one, constraints between columns, and the keys that should be defined.
Joe Celko, widely viewed as an expert in the SQL language, brings us a series that looks to help you understand the fundamentals of the design process. The articles in the series are linked below..."
The fundamentals of design are often not taught to developers or DBAs when they are given the task of building tables. Many people do not understand the logic used to decide what columns to use, the data types for each one, constraints between columns, and the keys that should be defined.
Joe Celko, widely viewed as an expert in the SQL language, brings us a series that looks to help you understand the fundamentals of the design process. The articles in the series are linked below..."
Monday, August 9, 2010
Random Rows
Here's an easy way to select a random row from a table:
SELECT TOP 1 * FROM Test4 ORDER BY NEWID()
SELECT TOP 1 * FROM Test4 ORDER BY NEWID()
Tuesday, August 3, 2010
Data Profiling, Data Quality
A couple of good Wikipedia articles on data profiling and data quality, and one on the (relatively) new data profiling tool in SQL Server 2008 SSIS.
Subscribe to:
Posts (Atom)