<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-18730743</id><updated>2012-01-25T04:05:26.862-08:00</updated><category term='OUTER APPLY'/><category term='delimited text file'/><category term='subquery'/><category term='Adventure Works'/><category term='DTS'/><category term='Data Quality Assessment'/><category term='semi-join'/><category term='percentage sampling'/><category term='SQL Injection'/><category term='books'/><category term='anti-join'/><category term='database management system'/><category term='TO_CHAR'/><category term='Dynamics AX'/><category term='SQL Server 2012'/><category term='Metalink'/><category term='data warehouse'/><category term='IsDate'/><category term='Cognos Express'/><category term='AdventureWorks'/><category term='common table expressions'/><category term='data-driven organization'/><category term='query'/><category term='Aggregate'/><category term='pull vs push'/><category term='software development'/><category term='level of detail'/><category term='data migration'/><category term='RANK'/><category term='Visual Studio 2008'/><category term='Ac'/><category term='no records'/><category term='union'/><category term='data analysis'/><category term='in memory database'/><category term='thoughts'/><category term='online resources'/><category term='dynamic query'/><category term='unicode'/><category term='SSIS'/><category term='master data'/><category term='empty string'/><category term='character index'/><category term='CONNECT BY'/><category term='IBM'/><category term='packages'/><category term='table'/><category term='LightSwitch'/><category term='foreign key'/><category term='nchar'/><category term='DateDiff'/><category term='Data Mining'/><category term='best practices'/><category term='SQL Server 2005'/><category term='DATEPART'/><category term='USERENV'/><category term='definition'/><category term='padding'/><category term='foreign key constraint'/><category term='cognitive maps'/><category term='window functions'/><category term='EXISTS'/><category term='Stuff'/><category term='Visual Studio 2010 CR'/><category term='LTrim'/><category term='VBA'/><category term='Left'/><category term='data profiling'/><category term='denormalized data'/><category term='problems'/><category term='text'/><category term='nth record'/><category term='view'/><category term='running totals'/><category term='randomized data selection'/><category term='SSRS'/><category term='DatabaseProperty'/><category term='string data type'/><category term='Data Cleansing'/><category term='Domain Integrity'/><category term='undocumented feature'/><category term='NVL'/><category term='dependency tree'/><category term='CharIndex'/><category term='IsNull'/><category term='statistics'/><category term='unstructured data'/><category term='error'/><category term='Test Drive'/><category term='correlated sub-query'/><category term='Excel'/><category term='Len'/><category term='competitive teams'/><category term='multi-joins'/><category term='fallacies'/><category term='education system'/><category term='Vista'/><category term='refactory'/><category term='operator'/><category term='accuracy'/><category term='CLR'/><category term='loop'/><category term='data mapping'/><category term='ETL'/><category term='clauses'/><category term='Test data'/><category term='Poor Data Quality'/><category term='NULL string'/><category term='ISO'/><category term='MSXML'/><category term='information schema views'/><category term='eval'/><category term='special character'/><category term='flat file database'/><category term='mind maps'/><category term='White Paper'/><category term='ROWCOUNT'/><category term='aggregate window functions'/><category term='Oracle'/><category term='currency'/><category term='SQLClient'/><category term='AVG'/><category term='length'/><category term='GetDate'/><category term='Access'/><category term='RTrim'/><category term='Resources'/><category term='child table'/><category term='Data Cleaning'/><category term='Lists as Parameters in Stored Procedures'/><category term='INFORMATION_SCHEMA'/><category term='correlated query'/><category term='team work'/><category term='self-join'/><category term='handling nulls'/><category term='inline view'/><category term='GREATEST'/><category term='normalized data'/><category term='ad-hoc reporting'/><category term='SQL92'/><category term='application architecture'/><category term='INTERSECT'/><category term='analytic functions'/><category term='nvarchar'/><category term='Metadata'/><category term='Reports'/><category term='rapid prototyping'/><category term='OLAP'/><category term='installation error'/><category term='UDFs'/><category term='SQL Server 2008'/><category term='cloud computing'/><category term='workaround'/><category term='Informatica'/><category term='JOIN'/><category term='leading space'/><category term='DateAdd'/><category term='left join'/><category term='ASCII'/><category term='RDBMS'/><category term='data dictionary'/><category term='table-valued function'/><category term='COM'/><category term='ANSI 92'/><category term='prime numbers'/><category term='developer tricks'/><category term='Union All'/><category term='reporting framework'/><category term='databases'/><category term='filters'/><category term='trailing space'/><category term='Delimiters'/><category term='data types'/><category term='DMV'/><category term='Oracle APPS'/><category term='BI'/><category term='GROUP BY'/><category term='DMF'/><category term='index'/><category term='add-in'/><category term='SQL Server 2008 R2'/><category term='FULL OUTER JOIN'/><category term='not-equal join'/><category term='SQL Server Engine'/><category term='OVER'/><category term='DATENAME'/><category term='Data Flow Task'/><category term='varchar'/><category term='templates'/><category term='what&apos;s new'/><category term='EXEC'/><category term='SQL'/><category term='documentation'/><category term='case sensitivity'/><category term='TSQL Challenge'/><category term='concatenation'/><category term='database objects'/><category term='Nulls'/><category term='SQL Server 2000'/><category term='meta-blogging'/><category term='Default'/><category term='Oracle vs. SQL Server'/><category term='ontology'/><category term='Data Export'/><category term='RAND'/><category term='date'/><category term='TO_DATE'/><category term='views types'/><category term='insert'/><category term='validation'/><category term='NullIf'/><category term='outsourcing'/><category term='aggregate functions'/><category term='Conditional Split'/><category term='troubleshooting'/><category term='set theory'/><category term='data source'/><category term='applications'/><category term='Unique Identifier'/><category term='cursors'/><category term='CAST'/><category term='sp_executesql'/><category term='row_number'/><category term='personal database'/><category term='incremental update'/><category term='attributes'/><category term='function'/><category term='Enterprise reporting'/><category term='structuredness'/><category term='macro'/><category term='JOIN syntax'/><category term='performance'/><category term='structured data'/><category term='.Net assembly'/><category term='Legacy System'/><category term='supply vs demand'/><category term='datbase objects'/><category term='MS Office'/><category term='x64'/><category term='CROSS APPLY'/><category term='ERP vendors'/><category term='table value constructor'/><category term='Uniqueness'/><category term='Project Management'/><category term='MySQL'/><category term='CRM'/><category term='SQL Server R2'/><category term='Reverse'/><category term='security'/><category term='dependecy'/><category term='Replace'/><category term='sequential data'/><category term='CRUD'/><category term='Entity Integrity'/><category term='EXCEPT'/><category term='Completeness'/><category term='cardinality types'/><category term='Visual Studio 2008 Express'/><category term='temporary table'/><category term='ERP implementations'/><category term='CASE'/><category term='ranking window functions'/><category term='IN'/><category term='sp_MSforeachdb'/><category term='limitations'/><category term='DML'/><category term='Cognos Enterprise Business Intelligence'/><category term='Learning'/><category term='system catalog views'/><category term='cardinality'/><category term='MCITP'/><category term='database design'/><category term='IsNumeric'/><category term='book review'/><category term='trimming'/><category term='OPENQUERY'/><category term='operations'/><category term='Web Applications'/><category term='Data Quality Rules'/><category term='Substring'/><category term='Right'/><category term='SQL 2005 Native Client'/><category term='automation'/><category term='recursion'/><category term='business strategies'/><category term='table variable'/><category term='LEAST'/><category term='Space'/><category term='dense_rank'/><category term='list of values'/><category term='SQL Server'/><category term='IT'/><category term='parent table'/><category term='PIVOT operator'/><category term='Reports Types'/><category term='BOM'/><category term='Conformity'/><category term='Data Management'/><category term='string'/><category term='level of accuracy'/><category term='TOP'/><category term='problem solving'/><category term='trivial equality'/><category term='Lists and a Little Math'/><category term='developers'/><category term='delete'/><category term='Referential Integrity'/><category term='OLTP'/><category term='CONVERT'/><category term='comparison'/><category term='issues'/><category term='COALESCE'/><category term='NetWeaver'/><category term='semi-structured data'/><category term='Duplicates'/><category term='OPENROWSET'/><category term='security vulnerabilities'/><category term='database'/><category term='ADO'/><category term='data quality'/><category term='primary key'/><category term='char'/><category term='stored procedure'/><category term='incremental load'/><category term='ntext'/><category term='views'/><category term='sys'/><category term='tutorial'/><category term='Stored Procedures'/><category term='ERP'/><category term='precision'/><category term='communication'/><category term='hierarchies'/><category term='BETWEEN'/><category term='sp_configure'/><category term='Number of Records'/><category term='tempdb'/><category term='Transactions'/><category term='Data Quality Dimensions'/><category term='data mart'/><category term='DDL'/><category term='certification'/><category term='Introduction in XML data type under SQL Server 2005'/><category term='DECODE'/><category term='Replicate'/><category term='volume of data'/><category term='Synchronization'/><category term='vertical join'/><category term='TOC'/><category term='Data  Conversion'/><category term='Consistency'/><category term='Data Validation'/><category term='MCTS'/><category term='Information Systems'/><category term='horizontal join'/><category term='Update'/><category term='OA-01445'/><category term='FILESTREAM'/><category term='6 out of 49'/><category term='SSIS Package'/><title type='text'>SQL Troubles</title><subtitle type='html'>A blog on SQL, data and database related topics</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default?start-index=101&amp;max-results=100'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>178</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18730743.post-4240336620092418583</id><published>2011-12-02T20:49:00.001-08:00</published><updated>2011-12-02T20:49:00.335-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='AVG'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregate functions'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='OVER'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregate window functions'/><category scheme='http://www.blogger.com/atom/ns#' term='RANK'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='nth record'/><title type='text'>Window Functions – Part I: The Case for Window Functions</title><summary type='text'>Introduction          In the past, in the absence or in parallel with other techniques, aggregate functions proved to be quite useful in order to solve several types of problems that involve the retrieval of first/last record or the display of details together with averages and other aggregates. Typically their use involves two or more joins between a dataset and an aggregation based on the same </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4240336620092418583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4240336620092418583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4240336620092418583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4240336620092418583'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/12/window-functions-part-i-case-for-window.html' title='Window Functions – Part I: The Case for Window Functions'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-3S3BYqIGQGk/TtmqFlGV3CI/AAAAAAAAAls/yCuA83MO_6A/s72-c/window%252520function%252520-%252520details_thumb%25255B1%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1169220070187356364</id><published>2011-11-11T16:34:00.001-08:00</published><updated>2011-11-11T16:40:54.587-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamics AX'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2012'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='what&apos;s new'/><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><title type='text'>What’s New #4: SQL Server 2012 is almost here</title><summary type='text'>    I was quite quiet for the past 3-4 months, and this not because of the lack of blogging material, but lack of time. Instead of writing I preferred reading, diving in some special topics related to SQL Server (e.g. tempdb and security), in the near future following to post some of my notes. For short time I was busy learning for ITIL® v3 Foundation Certification, the topics on Knowledge </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1169220070187356364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1169220070187356364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1169220070187356364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1169220070187356364'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/11/whats-new-4-sql-server-2012-is-almost.html' title='What’s New #4: SQL Server 2012 is almost here'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-442432284926989106</id><published>2011-08-04T13:39:00.001-07:00</published><updated>2011-08-04T13:39:03.711-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='Access'/><category scheme='http://www.blogger.com/atom/ns#' term='LightSwitch'/><title type='text'>MS Access vs. LightSwitch: About Starts and Ends of Software Products</title><summary type='text'>Introduction        When an important software product or technology is released on the market, it brings with it dooming prophecies about the end/death of a competing or related product or technology. Even if maybe it catches the attention, the approach became a stereotype leading to other futile fights between adepts, some food for thought and a pile of words for search engines. As LightSwitch </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/442432284926989106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=442432284926989106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/442432284926989106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/442432284926989106'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/08/ms-access-vs-lightswitch-about-starts.html' title='MS Access vs. LightSwitch: About Starts and Ends of Software Products'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1234125849999660528</id><published>2011-07-16T14:24:00.001-07:00</published><updated>2011-07-16T14:24:44.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='MSXML'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net assembly'/><title type='text'>Could not load file or assembly Microsoft.MSXML…</title><summary type='text'>    I’m not programming anymore as I used to do, though from time to time I still fancy some .Net programming. It’s not much, small applications or CLR-based libraries for SQL Server. Quite often, when I return to programming after a long pause it happens that I run into problems, finding that something that was working some time ago isn’t working anymore. This time I couldn’t load anymore one of</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1234125849999660528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1234125849999660528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1234125849999660528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1234125849999660528'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/07/could-not-load-file-or-assembly.html' title='Could not load file or assembly Microsoft.MSXML…'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4272704516787020487</id><published>2011-06-17T18:12:00.001-07:00</published><updated>2011-06-17T18:15:14.402-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EXEC'/><category scheme='http://www.blogger.com/atom/ns#' term='table value constructor'/><category scheme='http://www.blogger.com/atom/ns#' term='list of values'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic query'/><title type='text'>Pulling the Strings of SQL Server–Part X: Dynamic Queries</title><summary type='text'>    A dynamic query is a query constructed at runtime, techniques often indispensable in many situations that require a certain flexibility in query’s creation. The creation of a dynamic query is nothing but a set of operations with strings, many of the techniques mentioned before becoming handy. SQL Server provides two functions for the execution of dynamic queries, namely EXECUTE statements (or</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4272704516787020487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4272704516787020487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4272704516787020487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4272704516787020487'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/06/pulling-strings-of-sql-serverpart-x.html' title='Pulling the Strings of SQL Server–Part X: Dynamic Queries'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3509232538952817584</id><published>2011-06-17T14:05:00.001-07:00</published><updated>2011-06-17T14:05:27.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='table value constructor'/><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><category scheme='http://www.blogger.com/atom/ns#' term='list of values'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><category scheme='http://www.blogger.com/atom/ns#' term='concatenation'/><title type='text'>Pulling the Strings of SQL Server - Part VII: List of Values</title><summary type='text'>    Lists are one of the basic structures in Mathematics, the term referring to an (ordered) set of elements separated by comma, space or any other delimiter (e.g. “:”, “;”). The elements of a list can be numbers, words, functions, or any other type of objects. In the world of databases, a list is typically formed out of the values of a given column or a given record, however it could span also a</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3509232538952817584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3509232538952817584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3509232538952817584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3509232538952817584'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/06/pulling-strings-of-sql-server-part-vii.html' title='Pulling the Strings of SQL Server - Part VII: List of Values'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-c2S0IOJfkpc/TfvBg_Q6GvI/AAAAAAAAAis/Gtea7p6lA2c/s72-c/List-of-values---concatenation_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3556272985095724450</id><published>2011-04-22T15:22:00.001-07:00</published><updated>2011-04-22T15:23:52.014-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='data source'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SSRS: Wizarding a Report - First Magic Class</title><summary type='text'>    One year back I started a set of posts on SSIS showing how to create a package with ‘SQL Server Import and Export Wizard’ using as source a SQL Server, respectively Oracle database, in a third post showing how to use the Data Flow Task. The “wizarding” thematic was based on the fact the respective posts were showing how to make use of the wizards built within SQL Server and Visual Studio in </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3556272985095724450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3556272985095724450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3556272985095724450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3556272985095724450'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/04/ssrs-wizarding-report-first-magic-class.html' title='SSRS: Wizarding a Report - First Magic Class'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TbH_oridmTI/AAAAAAAAAhg/c29vnIBX3g4/s72-c/SSRS-Tutorial-New-Project_thumb2.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3673942249480990357</id><published>2011-04-08T17:44:00.001-07:00</published><updated>2011-04-08T17:44:31.568-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='database design'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='Number of Records'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Searching a Value within a Database</title><summary type='text'>    Some years back, in a Management meeting related to one of the projects I was working on, one of the Managers made a quite interesting statement, something like: “it should be easy to pool in an Excel sheet from the whole database all the information I am interested in”. I kind of smiled, because the information he was requiring was spanning within different modules, having different levels </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3673942249480990357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3673942249480990357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3673942249480990357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3673942249480990357'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/04/searching-within-database-for-value.html' title='Searching a Value within a Database'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_WSUNWp1KJOo/TZ-r1U9P5fI/AAAAAAAAAhY/YuQwj-F9Hd4/s72-c/search%20in%20database_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1655998279128897015</id><published>2011-04-08T15:31:00.001-07:00</published><updated>2011-04-08T15:45:28.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='union'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='table value constructor'/><category scheme='http://www.blogger.com/atom/ns#' term='Update'/><category scheme='http://www.blogger.com/atom/ns#' term='insert'/><title type='text'>Table Value Constructors at Work</title><summary type='text'>    Paradoxically, the first new SQL Server 2008 feature I learned, soon after the first CTP was made available, was the use of table value constructors, however I managed all this time without using it. This happened because I was either working on previous SQL Server versions or because other techniques were more appropriate to the problems I had to solve. So, a few days ago, the use of table </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1655998279128897015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1655998279128897015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1655998279128897015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1655998279128897015'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/04/table-value-constructors-at-work.html' title='Table Value Constructors at Work'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-9109460702762576675</id><published>2011-03-25T13:36:00.001-07:00</published><updated>2011-03-25T13:47:02.275-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='refactory'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='filters'/><category scheme='http://www.blogger.com/atom/ns#' term='data analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='validation'/><title type='text'>Approaching a Query</title><summary type='text'>    You received a (long) query for troubleshooting, reviewing, conversion or any similar tasks. In addition, you don’t know much about the underlying table structure or business logic. So, what do you do then? For sure two things are intuitively clear: you don’t need to panic and, understanding the query may help you in your task. Understanding the query, it seems such a simple statement, though</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/9109460702762576675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=9109460702762576675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/9109460702762576675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/9109460702762576675'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/03/approaching-query.html' title='Approaching a Query'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4151056092456044290</id><published>2011-03-10T15:38:00.001-08:00</published><updated>2011-03-16T13:18:25.612-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Len'/><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><category scheme='http://www.blogger.com/atom/ns#' term='padding'/><category scheme='http://www.blogger.com/atom/ns#' term='Stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='Replace'/><category scheme='http://www.blogger.com/atom/ns#' term='concatenation'/><title type='text'>Pulling the Strings of SQL Server – Part VIII: Insertions, Deletions and Replacements</title><summary type='text'>    Until now, the operations with strings resumed to concatenation and its reverse operation(s) - extracting a substring or splitting a string into substrings. It was just the warm up! There are several other important operations that involve the internal manipulation of strings – insertion, deletion and replacement of a substring in a given string, operations performed using the Replace and </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4151056092456044290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4151056092456044290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4151056092456044290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4151056092456044290'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/03/pulling-strings-of-sql-server-part-viii.html' title='Pulling the Strings of SQL Server – Part VIII: Insertions, Deletions and Replacements'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TXlg-5sIWwI/AAAAAAAAAg4/kUlYeRTzzJQ/s72-c/replace%20example%201_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6609279560113615193</id><published>2011-02-24T12:07:00.001-08:00</published><updated>2011-02-24T12:52:38.075-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delimiters'/><category scheme='http://www.blogger.com/atom/ns#' term='Right'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='CharIndex'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Substring'/><category scheme='http://www.blogger.com/atom/ns#' term='Left'/><title type='text'>Pulling the Strings of SQL Server – Part VI: Subparts of a String</title><summary type='text'>    No matter how normalized a database is, there will always be the need to encode multiple semantic entities in a string, needing thus to extract them later. For example data like the Street Name and Number, or the Country Phone Prefix and Phone Number, the First and the Last Name, etc. Another frequent scenario is the misuse of a long-sized string data types to store multiple delimited </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6609279560113615193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6609279560113615193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6609279560113615193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6609279560113615193'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/02/pulling-strings-of-sql-server-subparts.html' title='Pulling the Strings of SQL Server – Part VI: Subparts of a String'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_WSUNWp1KJOo/TWa6crhbi6I/AAAAAAAAAgc/_uMma4FWteM/s72-c/Substrings%20Example%201_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6137999714555131959</id><published>2011-02-21T14:57:00.001-08:00</published><updated>2011-06-17T18:13:46.310-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='special character'/><category scheme='http://www.blogger.com/atom/ns#' term='Space'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic query'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='concatenation'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='trimming'/><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><category scheme='http://www.blogger.com/atom/ns#' term='TOC'/><category scheme='http://www.blogger.com/atom/ns#' term='length'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='insert'/><title type='text'>Pulling the Strings of SQL Server – TOC</title><summary type='text'>    There are many books out there dealing with SQL Server string data types, basic operations performed with them, the use of various string related functions, and most of the books stop there. I learned many things from such books, though, as I had to “discover” myself some of the tricks of working with strings, I’m trying in a set of posts entitled “Pulling the Strings of SQL Server” to treat </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6137999714555131959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6137999714555131959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6137999714555131959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6137999714555131959'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/02/pulling-strings-of-sql-server-toc.html' title='Pulling the Strings of SQL Server – TOC'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-633757970899691784</id><published>2011-02-04T17:05:00.001-08:00</published><updated>2011-02-05T02:29:49.733-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='delete'/><category scheme='http://www.blogger.com/atom/ns#' term='TOP'/><category scheme='http://www.blogger.com/atom/ns#' term='table-valued function'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='sequential data'/><category scheme='http://www.blogger.com/atom/ns#' term='view'/><title type='text'>Deleting Sequential Data From a Table</title><summary type='text'>    Last week I run into an interesting solution to a simple problem, problem I dealt with in several occasions too: how to delete (efficiently) sequential data, or how LuborK calls it in his post, “a problem of efficient ordered delete”.  In this case he’s talking about the deletion of the first n records from a dataset of sequential data. It sounds like a simple problem considering that we can </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/633757970899691784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=633757970899691784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/633757970899691784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/633757970899691784'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/02/deleting-sequential-data-from-table.html' title='Deleting Sequential Data From a Table'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-7741318336648718655</id><published>2011-01-30T09:13:00.001-08:00</published><updated>2011-01-31T12:03:02.489-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='best practices'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008 R2'/><category scheme='http://www.blogger.com/atom/ns#' term='White Paper'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='what&apos;s new'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='DMV'/><category scheme='http://www.blogger.com/atom/ns#' term='DMF'/><title type='text'>What’s New #3: SQL Server Resources</title><summary type='text'>    During the past weeks I found several interesting learning resources on SQL Server 2008 topics, so here they are:         For those interest to upgrade their knowledge to SQL Server 2008 R2 Edition check the Microsoft SQL Server 2008 R2 Update for Developers Training Course videos on Channel9. They cover topics like Location Awareness, CLR Integration, StreamInsight, Reporting Services, </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/7741318336648718655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=7741318336648718655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7741318336648718655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7741318336648718655'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/01/whats-new-3-sql-server-resources.html' title='What’s New #3: SQL Server Resources'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3862834627482378593</id><published>2011-01-07T11:39:00.001-08:00</published><updated>2011-01-07T11:41:51.946-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Len'/><category scheme='http://www.blogger.com/atom/ns#' term='RTrim'/><category scheme='http://www.blogger.com/atom/ns#' term='index'/><category scheme='http://www.blogger.com/atom/ns#' term='Space'/><category scheme='http://www.blogger.com/atom/ns#' term='handling nulls'/><category scheme='http://www.blogger.com/atom/ns#' term='LTrim'/><category scheme='http://www.blogger.com/atom/ns#' term='trailing space'/><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='trimming'/><category scheme='http://www.blogger.com/atom/ns#' term='case sensitivity'/><category scheme='http://www.blogger.com/atom/ns#' term='leading space'/><category scheme='http://www.blogger.com/atom/ns#' term='length'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><title type='text'>Pulling the Strings of SQL Server–Part IV: Spaces, Trimming, Length and Comparisons</title><summary type='text'>    In the previous post on concatenation, I was talking about the importance of spaces and other delimiters in making concatenations’ output more “readable”. Excepting their importance in natural language, the spaces have some further implication in the way strings are stored and processed. As remarked in the introductory post from this topic, there are two types of spaces that stand out in the </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3862834627482378593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3862834627482378593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3862834627482378593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3862834627482378593'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/01/pulling-strings-of-sql-serverpart-iv.html' title='Pulling the Strings of SQL Server–Part IV: Spaces, Trimming, Length and Comparisons'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_WSUNWp1KJOo/TSdr8NTuLeI/AAAAAAAAAf8/HuT_j9nA7og/s72-c/comparisons%20-%20set%201_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3043464850664294361</id><published>2011-01-03T14:20:00.001-08:00</published><updated>2011-01-03T14:20:47.491-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='handling nulls'/><category scheme='http://www.blogger.com/atom/ns#' term='CharIndex'/><category scheme='http://www.blogger.com/atom/ns#' term='character index'/><category scheme='http://www.blogger.com/atom/ns#' term='Reverse'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='Nulls'/><category scheme='http://www.blogger.com/atom/ns#' term='length'/><title type='text'>Pulling the Strings of SQL Server–Part V: Character Indexes</title><summary type='text'>    A string is in fact a concatenation or chain of characters, each character in the string having a position referred as character’s index. In programming it’s useful to identify the first occurrence of a character or string in forward or backwards order, with a few simple tricks being possible to identify all the occurrences of the characters or whole strings in a string. Such functions are </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3043464850664294361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3043464850664294361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3043464850664294361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3043464850664294361'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/01/pulling-strings-of-sql-serverpart-v.html' title='Pulling the Strings of SQL Server–Part V: Character Indexes'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TSJLsxozinI/AAAAAAAAAfc/HqjOI2d97xc/s72-c/CharIndex%20Example%20Set%201_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4136348332773280563</id><published>2011-01-01T14:23:00.001-08:00</published><updated>2011-01-02T02:59:33.277-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='datbase objects'/><category scheme='http://www.blogger.com/atom/ns#' term='database design'/><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='DDL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='DML'/><title type='text'>Book Review: Head First SQL</title><summary type='text'>   I love the Head First O’Reilly book series which excepting the book on SQL, have acquired over its short existence several other titles like the ones on Data Analysis, Statistics and Excel, topics strongly correlated with the thematic of the current blog, but also related tangential topics like Project Management, Design Patterns, Object-Oriented Analysis and Design, Software Development, Web </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4136348332773280563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4136348332773280563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4136348332773280563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4136348332773280563'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2011/01/book-review-head-first-sql.html' title='Book Review: Head First SQL'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1149310578901849911</id><published>2010-12-31T10:13:00.001-08:00</published><updated>2010-12-31T10:13:59.821-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='meta-blogging'/><title type='text'>SQL Troubles - Past, Present and Future</title><summary type='text'>Introduction     Even if I started to blog 3-4 years ago, only this year (still 2010) I started to allocate more time for blogging, having two blogs on which I try to post something periodically: SQL Troubles and The Web of Knowledge plus a homonym Facebook supporting group (for the later blog). As a parenthesis, the two blogs are approaching related topics from different perspective, the first </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1149310578901849911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1149310578901849911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1149310578901849911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1149310578901849911'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/12/sql-troubles-past-present-and-future.html' title='SQL Troubles - Past, Present and Future'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TR4dXC4OUgI/AAAAAAAAAe8/5Oz2NTGydZM/s72-c/The%20Web%20of%20Knowledge%20-%20Clustrmaps%202010%20statistics_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6559731408538484111</id><published>2010-12-14T12:20:00.001-08:00</published><updated>2010-12-14T12:30:31.656-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operator'/><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><category scheme='http://www.blogger.com/atom/ns#' term='cursors'/><category scheme='http://www.blogger.com/atom/ns#' term='IsNull'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='handling nulls'/><category scheme='http://www.blogger.com/atom/ns#' term='string data type'/><category scheme='http://www.blogger.com/atom/ns#' term='concatenation'/><title type='text'>Pulling the Strings of SQL Server – Part III: Concatenation</title><summary type='text'>    Typically a database in general, and a table in particular, that follows the normalization rules, is designed to have the columns contain the smallest semantic chunks of data, it could be a Street, a Zip Code, City, a person’s First or Last Name, but also a large chunk of text like a Description or a Comment. No matter how well designed is a database, there will always be the need to do </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6559731408538484111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6559731408538484111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6559731408538484111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6559731408538484111'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/12/pulling-strings-of-sql-server-part-iii.html' title='Pulling the Strings of SQL Server – Part III: Concatenation'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TQfRatHzs2I/AAAAAAAAAeo/elpj6DVqPbk/s72-c/concatenation%202_thumb%5B8%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4756282874292524710</id><published>2010-12-10T15:47:00.001-08:00</published><updated>2010-12-10T15:47:24.676-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASCII'/><category scheme='http://www.blogger.com/atom/ns#' term='char'/><category scheme='http://www.blogger.com/atom/ns#' term='Space'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='Replicate'/><category scheme='http://www.blogger.com/atom/ns#' term='handling nulls'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='NULL string'/><title type='text'>Pulling the Strings of SQL Server–Part II: Creation and Selection</title><summary type='text'>    It doesn’t make sense to talk about the creation of string data types without talking about their “selection” as people typically want to see also examples at work, and not only learn about theoretical facts. I’m saying that because often programming seems to be like putting together the pieces of a puzzle without knowing how the final image would look like. Anyway, coming back to the topic, </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4756282874292524710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4756282874292524710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4756282874292524710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4756282874292524710'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/12/pulling-strings-of-sql-serverpart-ii.html' title='Pulling the Strings of SQL Server–Part II: Creation and Selection'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/TQK8ALxAxVI/AAAAAAAAAeQ/mkaqnVmw1dA/s72-c/Strings%20-%20example1_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-5941167152856925379</id><published>2010-12-08T14:55:00.001-08:00</published><updated>2010-12-08T15:03:19.931-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASCII'/><category scheme='http://www.blogger.com/atom/ns#' term='data quality'/><category scheme='http://www.blogger.com/atom/ns#' term='LEAST'/><category scheme='http://www.blogger.com/atom/ns#' term='loop'/><category scheme='http://www.blogger.com/atom/ns#' term='special character'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Pulling the Strings of SQL Server–Part IX: Special Characters</title><summary type='text'>    Under special characters denomination are categorized typically the characters that don’t belong to the alphabet of a given language, typically English (a-z, A-Z), or the numeric digits (0-9). Characters like umlauts (e.g. ä, ë, ö, ü, ÿ), accents (e.g. é, í, ó, ú) and other type of characters used in specific languages like German, French, Turkish, Hungarian, Romanian, Dutch or Swedish, </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/5941167152856925379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=5941167152856925379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5941167152856925379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5941167152856925379'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/12/pulling-strings-of-sql-serverpart-ix.html' title='Pulling the Strings of SQL Server–Part IX: Special Characters'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_WSUNWp1KJOo/TQAM3_HAUPI/AAAAAAAAAeA/u2xElWIFp6E/s72-c/special%20characters%201_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-5930251677117848385</id><published>2010-12-07T14:04:00.001-08:00</published><updated>2010-12-07T14:12:39.001-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='empty string'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='trailing space'/><category scheme='http://www.blogger.com/atom/ns#' term='NULL string'/><category scheme='http://www.blogger.com/atom/ns#' term='nvarchar'/><category scheme='http://www.blogger.com/atom/ns#' term='varchar'/><category scheme='http://www.blogger.com/atom/ns#' term='char'/><category scheme='http://www.blogger.com/atom/ns#' term='text'/><category scheme='http://www.blogger.com/atom/ns#' term='nchar'/><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='leading space'/><category scheme='http://www.blogger.com/atom/ns#' term='length'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='ntext'/><title type='text'>Pulling the Strings of SQL Server–Part I: An Introduction</title><summary type='text'>    The (character) string or simply the character data type, how is named by the MSDN documentation, is one of the primary data types available in a database and probably the most complex given the fact that it can encompass any combination of numeric, literal, date or any other primary data type. In fact it could include any type of chunk of text that could be written in any language as SQL </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/5930251677117848385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=5930251677117848385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5930251677117848385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5930251677117848385'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/12/pulling-strings-of-sql-serverpart-i.html' title='Pulling the Strings of SQL Server–Part I: An Introduction'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8089651513599514454</id><published>2010-12-04T16:55:00.001-08:00</published><updated>2010-12-04T16:59:33.483-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='function'/><category scheme='http://www.blogger.com/atom/ns#' term='BOM'/><category scheme='http://www.blogger.com/atom/ns#' term='recursion'/><category scheme='http://www.blogger.com/atom/ns#' term='loop'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='Reverse'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>A Look into Reverse</title><summary type='text'>    Some time back I was mentioning Stuff as one of the functions rarely used in SQL Server. Here’s another one: Reverse. I remember I used such a function in other programming languages and maybe 1-2 times in SQL Server, and I can’t say I seen it in action in other posts. As it name states and the MSDN documentation confirms, Reverse returns the reverse of a string value. The function takes as </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8089651513599514454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8089651513599514454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8089651513599514454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8089651513599514454'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/12/look-into-reverse.html' title='A Look into Reverse'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TPri76KvxQI/AAAAAAAAAd4/ehlCQ4veUtI/s72-c/Reverse%20-%20basics_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-700105497848127003</id><published>2010-11-29T15:19:00.001-08:00</published><updated>2010-11-29T15:19:42.699-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data quality'/><category scheme='http://www.blogger.com/atom/ns#' term='supply vs demand'/><category scheme='http://www.blogger.com/atom/ns#' term='structured data'/><category scheme='http://www.blogger.com/atom/ns#' term='data types'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><category scheme='http://www.blogger.com/atom/ns#' term='pull vs push'/><category scheme='http://www.blogger.com/atom/ns#' term='reporting framework'/><title type='text'>How Many Reporting Systems You Need?</title><summary type='text'>    I hope nobody’s questioning the fact that an organization needs at least a reporting system in order to take advantage of the huge amount of data it has collected over time, in order to have an overview on what’s happening in the organization, take better decision supported by data, etc. In one way or another many organizations arrive to have in place two or more reporting systems and all the</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/700105497848127003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=700105497848127003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/700105497848127003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/700105497848127003'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/11/how-many-reporting-systems-you-need.html' title='How Many Reporting Systems You Need?'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3365178942920433870</id><published>2010-10-12T12:01:00.001-07:00</published><updated>2010-10-12T12:02:47.218-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Access'/><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='COM'/><category scheme='http://www.blogger.com/atom/ns#' term='data analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='add-in'/><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><category scheme='http://www.blogger.com/atom/ns#' term='RDBMS'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='rapid prototyping'/><title type='text'>Why I (dis)like MS Access</title><summary type='text'>   In the previous post, “The Limitations of MS Access Database”, I highlighted a few of the limitations of MS Access  as database, ignoring the other two or three important aspects – Access as development, reporting, respectively data analysis platform. In this post I’ll retake the topic from a general and personal perspective, considering some of the features that I like and makes from Access a</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3365178942920433870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3365178942920433870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3365178942920433870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3365178942920433870'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/10/why-i-like-ms-access.html' title='Why I (dis)like MS Access'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_WSUNWp1KJOo/TLSwoJ9HxRI/AAAAAAAAAa8/DFpgxExVQUQ/s72-c/MarketShare_thumb%5B3%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2401742218144588248</id><published>2010-10-05T14:38:00.001-07:00</published><updated>2010-10-05T14:46:59.697-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Ac'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><category scheme='http://www.blogger.com/atom/ns#' term='limitations'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>The Limitations of MS Access Database</title><summary type='text'>    In the previous post I was highlighting some general considerations on the use of MS Access and Excel as frameworks for building applications. I left many things out from the lack of time and space, therefore, as the title reveals, in this post I will focus simply on the limitations of MS Access considered as Database. I considered then that Access is a fairly good as database, recommending </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2401742218144588248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2401742218144588248' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2401742218144588248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2401742218144588248'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/10/limitations-of-ms-access-database.html' title='The Limitations of MS Access Database'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2553781097469422174</id><published>2010-10-02T05:00:00.001-07:00</published><updated>2010-10-05T14:40:31.199-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='application architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='data quality'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Access'/><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='applications'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='RDBMS'/><title type='text'>Is MS Access or MS Excel the Answer to your Problem?</title><summary type='text'>Introduction      That’s one of the questions that followed me for years, quite often being asked by customers to provide a MS Access or MS Excel solution as an answer to a business need. The beauty of this question is that there is no right answer and, as I stressed out in several occasions, there is not always a straightforward answer to such a question in IT, the feasibility of an IT solution </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2553781097469422174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2553781097469422174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2553781097469422174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2553781097469422174'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/10/is-ms-access-or-ms-excel-answer-to-your.html' title='Is MS Access or MS Excel the Answer to your Problem?'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-250517446705441739</id><published>2010-09-29T11:35:00.001-07:00</published><updated>2010-09-29T11:35:04.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Some Thoughts on Performance Troubleshooting</title><summary type='text'>    I checked ReplTalk’s post on “waiting” statements, realizing that I had to write a similar query when troubleshooting performance of running queries in general, respectively blocking issues in particular. The novelty resides in Adam Machanic’s comment to the respective post, the link leading me to sp_whoisactive stored procedure which provides a collection of wait stats, lock information, </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/250517446705441739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=250517446705441739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/250517446705441739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/250517446705441739'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/09/some-thoughts-on-performance.html' title='Some Thoughts on Performance Troubleshooting'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2151879078308501004</id><published>2010-08-15T12:20:00.001-07:00</published><updated>2010-08-15T12:25:02.654-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='best practices'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Injection'/><category scheme='http://www.blogger.com/atom/ns#' term='security vulnerabilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>SQL Injection – Part I: An Introduction</title><summary type='text'>Introduction       If you are working in IT, most probably you’ve heard already about SQL Injection, if not then might be it’s a good idea to ask your colleagues and eventually your IT manager if your company has any policies related to it. If you are working for a software vendor or a consultancy company then SQL Injection countermeasure techniques might be quite well positioned in the list of </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2151879078308501004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2151879078308501004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2151879078308501004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2151879078308501004'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/08/sql-injection-part-i-introduction.html' title='SQL Injection – Part I: An Introduction'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TGg98ka-e9I/AAAAAAAAAao/7_msEkgGMzM/s72-c/SQL%20Injection%20-%20Statistics%20WhiteHat_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8515207176084869226</id><published>2010-08-12T15:32:00.001-07:00</published><updated>2010-08-13T14:49:30.099-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='temporary table'/><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='Metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='sys'/><category scheme='http://www.blogger.com/atom/ns#' term='tempdb'/><category scheme='http://www.blogger.com/atom/ns#' term='table variable'/><title type='text'>Temporary Tables vs. Table Variables – Stored in TempDB</title><summary type='text'>    Yesterday I started to read Ken Henderson’s book, SQL Server 2005 Practical Troubleshooting: The Database Engine, diving directly into tempdb topic (Chapter 9, Tempdb issues). He mentions that metadata are created in system tables when a temporary table is created (see p.415). This means that when a temporary table is created, a record must be created in tempdb’s sys.tables and sys.columns </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8515207176084869226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8515207176084869226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8515207176084869226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8515207176084869226'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/08/temporary-tables-vs-table-variables.html' title='Temporary Tables vs. Table Variables – Stored in TempDB'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_WSUNWp1KJOo/TGR2dGEZqoI/AAAAAAAAAaQ/PhqekJI4wQs/s72-c/temp%20vs%20variable%20tables%20-%20temporary%20example_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-5700562209958295280</id><published>2010-08-09T15:33:00.001-07:00</published><updated>2010-08-09T15:33:08.161-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='information schema views'/><category scheme='http://www.blogger.com/atom/ns#' term='ISO'/><category scheme='http://www.blogger.com/atom/ns#' term='INFORMATION_SCHEMA'/><category scheme='http://www.blogger.com/atom/ns#' term='system catalog views'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL92'/><title type='text'>SQL Server 2008 Information Schema Views</title><summary type='text'>    In the last post, Database Object Dependencies – An introduction, I was talking about metadata, in common understanding defined as “data about data”, and its meaning in the context of databases as “information (data) stored about data, the structures or objects related to data”. The SQL92, SQL99, SQL2003, and I suppose also SQL2008 and the next coming ISO standard document versions, define an</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/5700562209958295280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=5700562209958295280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5700562209958295280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5700562209958295280'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/08/sql-server-2008-information-schema.html' title='SQL Server 2008 Information Schema Views'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_WSUNWp1KJOo/TGCCI4hKIeI/AAAAAAAAAaI/KQKxuhE0I0Q/s72-c/INFORMATION_SCHEMA%20definitions_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2383210822907400950</id><published>2010-08-07T07:47:00.001-07:00</published><updated>2010-08-07T07:47:56.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foreign key constraint'/><category scheme='http://www.blogger.com/atom/ns#' term='dependecy'/><category scheme='http://www.blogger.com/atom/ns#' term='Metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='data migration'/><category scheme='http://www.blogger.com/atom/ns#' term='database objects'/><category scheme='http://www.blogger.com/atom/ns#' term='data mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='child table'/><category scheme='http://www.blogger.com/atom/ns#' term='parent table'/><category scheme='http://www.blogger.com/atom/ns#' term='dependency tree'/><category scheme='http://www.blogger.com/atom/ns#' term='data dictionary'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Database Object Dependencies – Part I: An introduction</title><summary type='text'>Introduction      Around the various data islands existing in the blue and the models that support them are created a whole range of database objects (views, stored procedures, user-defined functions) and other type of non-database objects (classes, strong-typed datasets, reports, ad-hoc queries, etc.) With each reference to a database object is created a database dependency, or simply dependency</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2383210822907400950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2383210822907400950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2383210822907400950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2383210822907400950'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/08/database-object-dependencies-part-i.html' title='Database Object Dependencies – Part I: An introduction'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3671311555838051040</id><published>2010-08-01T14:05:00.001-07:00</published><updated>2010-08-01T14:13:10.926-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO'/><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='DMV'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server Troubleshooting Resources – Part I</title><summary type='text'>    Last week the SQL Server troubleshooting-related topics came again on my table, and it’s actually quite an important topic. As I have disparate links I thought it makes sense to bring the links together in a post.       When searching for information it’s always a good idea to start with the documentation or the support site, in what concerns SQL Server troubleshooting Microsoft has several </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3671311555838051040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3671311555838051040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3671311555838051040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3671311555838051040'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/08/sql-server-troubleshooting-resources.html' title='SQL Server Troubleshooting Resources – Part I'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8980466296885095071</id><published>2010-07-31T12:55:00.001-07:00</published><updated>2010-08-01T03:25:55.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregate functions'/><category scheme='http://www.blogger.com/atom/ns#' term='self-join'/><category scheme='http://www.blogger.com/atom/ns#' term='normalized data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='denormalized data'/><category scheme='http://www.blogger.com/atom/ns#' term='insert'/><category scheme='http://www.blogger.com/atom/ns#' term='incremental load'/><title type='text'>Self-Joins and Denormalized Data Loading in Normalized Models</title><summary type='text'>    One of the scenarios in which I often make use of self-joins is when needing to load denormalized data into a normalized data model. A characteristic of the not-normalized or denormalized data is that there are repeating data, typically the so called header data, which need to be handled specifically.     Note:      Header data it’s improper said because an entity could contain more than 2 </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8980466296885095071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8980466296885095071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8980466296885095071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8980466296885095071'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/self-joins-and-denormalized-data.html' title='Self-Joins and Denormalized Data Loading in Normalized Models'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TFR_qB4EnkI/AAAAAAAAAZ4/LpL4gNHNFOI/s72-c/self-join%20normalization_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-5418404562056185672</id><published>2010-07-30T15:35:00.001-07:00</published><updated>2010-07-30T15:35:46.070-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><title type='text'>Believe and Not Doubt?!</title><summary type='text'>    Long time ago while reviewing a PowerPoint presentation on Oracle performance troubleshooting, on one of the pages was written with big letters something like “Believe and not doubt!”, this in the context of the knowledge transmitted from guru to other professionals. I do not believe in the approach of following blindly the techniques and knowledge of other professionals, and the professional</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/5418404562056185672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=5418404562056185672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5418404562056185672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5418404562056185672'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/believe-and-not-doubt.html' title='Believe and Not Doubt?!'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1683021460865284854</id><published>2010-07-30T11:16:00.001-07:00</published><updated>2010-07-30T11:42:23.628-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aggregate functions'/><category scheme='http://www.blogger.com/atom/ns#' term='self-join'/><category scheme='http://www.blogger.com/atom/ns#' term='inline view'/><category scheme='http://www.blogger.com/atom/ns#' term='Update'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Self-Join in Update Query - Update</title><summary type='text'>    In yesterday’s post on the same topic I tried to exemplify how a self-join update query could be written in order to avoid an error raised by the database engine. Even if this type of query is normally written for hierarchical structures consisting of one-level parent-child relations stored in the same table, my example was using a simple join based directly on the primary key. During the day</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1683021460865284854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1683021460865284854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1683021460865284854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1683021460865284854'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/self-join-in-update-query-update.html' title='Self-Join in Update Query - Update'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/TFMXAIAn79I/AAAAAAAAAZo/b7hiyvGaA1E/s72-c/self-join%20output%201_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8026766799615397586</id><published>2010-07-28T13:55:00.001-07:00</published><updated>2010-07-28T14:01:17.296-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='self-join'/><category scheme='http://www.blogger.com/atom/ns#' term='inline view'/><category scheme='http://www.blogger.com/atom/ns#' term='Update'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><category scheme='http://www.blogger.com/atom/ns#' term='view'/><title type='text'>Self-Join in Update Query</title><summary type='text'>    While reading R. Scheldon’s article on “UPDATE Basics in SQL Server” I remembered about a problem I had long time ago while attempting to do a self-join in an Update query. Such a query is quite useful in hierarchical structures consisting of one-level parent-child relations stored in the same table, when needed to update the parent based on child information, or vice-versa. The problem I had</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8026766799615397586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8026766799615397586' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8026766799615397586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8026766799615397586'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/self-join-in-update-query.html' title='Self-Join in Update Query'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1853231263483107543</id><published>2010-07-26T13:49:00.001-07:00</published><updated>2010-07-26T13:49:07.851-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x64'/><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='workaround'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Porting 32 bit CLR UDFs on 64 bit Platforms</title><summary type='text'>    Today I tried to port on a 64 bit platform a few of the CLR UDFs created in the previous posts, this time being constrained to use Visual Basic Studio 2010 Express to create and build the assembly on a x86 platform, and install the assembly on a x64 SQL Server box. From the previous troubleshooting experience between the two platforms, I knew that there will be some challenges, fortunately </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1853231263483107543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1853231263483107543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1853231263483107543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1853231263483107543'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/porting-32-bit-clr-udfs-on-64-bit.html' title='Porting 32 bit CLR UDFs on 64 bit Platforms'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1862473177655631966</id><published>2010-07-24T14:25:00.001-07:00</published><updated>2010-07-25T07:20:37.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='competitive teams'/><category scheme='http://www.blogger.com/atom/ns#' term='communication'/><category scheme='http://www.blogger.com/atom/ns#' term='team work'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>Football and Software Development</title><summary type='text'>    I wanted to write this post during the South Africa World Cup 2010 though because of the lack of time and because I was waiting for some statistics I could use, here I am, two weeks after the final whistle of the game for the first place. Football and Software Development, two domains that seems to have nothing in common, even if many software developers like to play football, and many </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1862473177655631966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1862473177655631966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1862473177655631966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1862473177655631966'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/football-and-software-development.html' title='Football and Software Development'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2764010871498245129</id><published>2010-07-24T07:33:00.001-07:00</published><updated>2010-07-24T07:35:52.773-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><title type='text'>Some Notes on Dates</title><summary type='text'>   The Date is one of the most difficult data types to handle, given the fact that it might take different formats (e.g. DD/MM/YYYY, MM/DD/YYYY, DD/MM/YY, DD-MON-YYYY, etc.), and even if the various formats make a limited list, the fact that each database, machine or application could work with a different date format or set of date formats, this makes developers’ life a nightmare. The </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2764010871498245129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2764010871498245129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2764010871498245129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2764010871498245129'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/some-notes-on-dates.html' title='Some Notes on Dates'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1163263295665220146</id><published>2010-07-24T05:24:00.001-07:00</published><updated>2010-07-24T05:24:46.714-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education system'/><category scheme='http://www.blogger.com/atom/ns#' term='developers'/><category scheme='http://www.blogger.com/atom/ns#' term='Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='IT'/><title type='text'>Over-Educated, Yet Under-Qualified?</title><summary type='text'>     I know this blog is attempting to treat subjects related to data and databases, though the database developers, same as other type of developers and other professionals, and the various aspects of their professional life are part of the landscape too. Alfred Thompson, in his post “Over-Educated, Yet Under-Qualified?”, approaches quite an important topic for many graduates, but especially the</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1163263295665220146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1163263295665220146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1163263295665220146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1163263295665220146'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/over-educated-yet-under-qualified.html' title='Over-Educated, Yet Under-Qualified?'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3301559268825138246</id><published>2010-07-22T13:22:00.001-07:00</published><updated>2010-07-22T13:22:03.232-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sp_MSforeachdb'/><category scheme='http://www.blogger.com/atom/ns#' term='sys'/><category scheme='http://www.blogger.com/atom/ns#' term='DatabaseProperty'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Running a Statement for Each Database – The CLR Version</title><summary type='text'>    I continue the series of posts on the use of the dbo.ExecuteScalarTo&lt;DataType&gt;  CLR functions created in a previous post, this time, as is mentioned in the title, by running a statement for each database. The old-fashion method of a statement for each database is with the help of undocumented stored procedure sp_MSforeachdb, see for example ReplTalk’s post found recently. Actually the </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3301559268825138246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3301559268825138246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3301559268825138246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3301559268825138246'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/running-statement-for-each-database-clr.html' title='Running a Statement for Each Database – The CLR Version'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_WSUNWp1KJOo/TEioakOLX_I/AAAAAAAAAZg/UfcZOZYoE-8/s72-c/CLR%20%20UDF%20-%20for%20each%20database_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4102256681174962501</id><published>2010-07-17T05:03:00.001-07:00</published><updated>2010-07-17T05:13:19.861-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><category scheme='http://www.blogger.com/atom/ns#' term='DMV'/><category scheme='http://www.blogger.com/atom/ns#' term='OPENROWSET'/><category scheme='http://www.blogger.com/atom/ns#' term='Number of Records'/><title type='text'>Number of Records – The DMV Approach</title><summary type='text'>    In SQL Server 2000 the safest way to return the total number of records from a table was to do a simple COUNT. I’m say the safest way because (for big tables) there was a faster but approximate way to obtain the same information by using sysindexes table, which, as its name denotes, was storing one record for each index and table in a given database. When I started to use SQL Server 2005 and </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4102256681174962501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4102256681174962501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4102256681174962501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4102256681174962501'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/number-of-records-dmv-approach.html' title='Number of Records – The DMV Approach'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8327517769868631609</id><published>2010-07-12T15:21:00.001-07:00</published><updated>2010-07-12T15:21:54.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='CRUD'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><title type='text'>CRUD Stored Procedures from Metadata – Part II: The Get, Dropdown and Delete</title><summary type='text'>    If in the previous post on CRUD Stored Procedures from Metadata I shown how could be created automatically a stored procedure for Insert/Update, in this post I’ll show how a similar template could be created in order to create a Get, Dropdown or Delete stored procedure. The so called “Get” stored procedure is used in order to retrieve a record for view/update, and here’s the template for it:</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8327517769868631609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8327517769868631609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8327517769868631609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8327517769868631609'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/crud-stored-procedures-from-metadata_12.html' title='CRUD Stored Procedures from Metadata – Part II: The Get, Dropdown and Delete'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-7755037576735772135</id><published>2010-07-12T13:47:00.001-07:00</published><updated>2010-07-12T13:47:07.570-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='CRUD'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><title type='text'>CRUD Stored Procedures from Metadata – Part I: The Insert/Update</title><summary type='text'>    In Saving Data With Stored Procedures post I shown my favorite technique of creating a new record, respectively updating an existing record, by using a stored procedure, while in Creating a Stored Procedure from Table’s Metadata post I shown how a macro could be created in a semiautomatic manner in order to create the same type of stored procedure using table’s metadata. The Excel approach, </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/7755037576735772135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=7755037576735772135' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7755037576735772135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7755037576735772135'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/crud-stored-procedures-from-metadata.html' title='CRUD Stored Procedures from Metadata – Part I: The Insert/Update'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-990384069868915087</id><published>2010-07-11T06:42:00.001-07:00</published><updated>2010-07-11T06:59:49.508-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CONVERT'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic query'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='CAST'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><category scheme='http://www.blogger.com/atom/ns#' term='eval'/><category scheme='http://www.blogger.com/atom/ns#' term='sp_executesql'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Evaluating Textual Expressions with CLR UDFs</title><summary type='text'>    The developers having experience with scripting languages like VBScript or JavaScript are most probably used with Eval (VBScript/JavaScript) or Execute (VBScript) functions, functions that parse a string evaluating its content to an expression or evaluating a given set of instructions, allowing thus to create and execute code at runtime. In several occasions I needed similar functionality </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/990384069868915087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=990384069868915087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/990384069868915087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/990384069868915087'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/evaluating-textual-expressions-with-clr.html' title='Evaluating Textual Expressions with CLR UDFs'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_WSUNWp1KJOo/TDnKWHdazlI/AAAAAAAAAZI/EuwMI4g9Uss/s72-c/CLR%20UDF%20-%20expression%20evaluation_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-9139949485748280556</id><published>2010-07-04T09:56:00.001-07:00</published><updated>2010-07-11T06:47:11.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aggregate functions'/><category scheme='http://www.blogger.com/atom/ns#' term='Metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><category scheme='http://www.blogger.com/atom/ns#' term='Number of Records'/><category scheme='http://www.blogger.com/atom/ns#' term='data profiling'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Data Profiling – Part II: Using CLR functions</title><summary type='text'>    In the previous post on Data Profiling I introduced basic data profiling techniques, the queries used for exemplification being quite simple. Probably many people will ask themselves on whether is possible to automate data profiling for a whole range of tables/datasets and the attributes they contain. The answer is simple, this relies entirely on databases’ capabilities of running dynamic </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/9139949485748280556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=9139949485748280556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/9139949485748280556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/9139949485748280556'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/data-profiling-part-ii-using-clr.html' title='Data Profiling – Part II: Using CLR functions'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_WSUNWp1KJOo/TDC9O1t6C_I/AAAAAAAAAYw/YaSwt62QyCU/s72-c/Data%20Profiling%20-%20testing%20CLR%20functions_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-7078153573272999731</id><published>2010-07-03T12:29:00.001-07:00</published><updated>2010-07-03T12:29:55.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data quality'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregate functions'/><category scheme='http://www.blogger.com/atom/ns#' term='volume of data'/><category scheme='http://www.blogger.com/atom/ns#' term='Completeness'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Number of Records'/><category scheme='http://www.blogger.com/atom/ns#' term='data profiling'/><title type='text'>Data Profiling – Part I: An Introduction</title><summary type='text'>Some Generalities         J.E. Olson, in his book Data Quality: The Accuracy Dimension defines data profiling as "the use of analytical techniques to discover the true content, structure, and quality of data" [1]. Understanding the structure of data is quintessential for database developers in order to provide accurate technical solutions (reports, database objects for various purposes), though </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/7078153573272999731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=7078153573272999731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7078153573272999731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7078153573272999731'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/07/data-profiling-part-i-introduction.html' title='Data Profiling – Part I: An Introduction'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/TC-PklaL4VI/AAAAAAAAAX4/Otxle0Bm6YA/s72-c/Data%20Profiling%20-%20metadata%20details_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8635174759046375272</id><published>2010-06-29T13:55:00.001-07:00</published><updated>2010-06-29T14:09:46.171-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLClient'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='OPENROWSET'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><category scheme='http://www.blogger.com/atom/ns#' term='Number of Records'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Number of Records – The CLR Version</title><summary type='text'>    While scanning rapidly the daily posts from MSDN blogs, I stopped on Chris Skorlinski’s “Example code executing TSQL for each Table in a database” post, wondering then on whether he’s using other techniques than I used in the past. I run into this type of need several times, especially in cases in which I wanted to report in an automated manner the number of records for a given set of tables,</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8635174759046375272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8635174759046375272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8635174759046375272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8635174759046375272'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/06/number-of-records-clr-version.html' title='Number of Records – The CLR Version'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/TCpdxJYQpyI/AAAAAAAAAXw/2EskGxhqoSo/s72-c/CLR%20UDF%20-%20Database%20Reference_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4645854311602012666</id><published>2010-06-27T13:47:00.001-07:00</published><updated>2010-06-27T13:47:37.418-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Office'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>What’s New #2</title><summary type='text'>Microsoft Office - Cloud Computing is the Word         Two weeks ago, on 15th of June 2010, Microsoft Office was shipped together with Visio and Project 2010, closing the cycle of releases started with SQL Server 2008 R2, Visual Studio 2010, Sharepoint 2010 (all 3 shipped in April 2010) and Windows Azure (available also in April). The words that describe/unite at best these software tools is </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4645854311602012666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4645854311602012666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4645854311602012666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4645854311602012666'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/06/whats-new-2.html' title='What’s New #2'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4504069619483744291</id><published>2010-06-25T14:31:00.001-07:00</published><updated>2010-06-25T14:31:42.074-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic query'/><category scheme='http://www.blogger.com/atom/ns#' term='trivial equality'/><title type='text'>Trivial Equalities in Queries</title><summary type='text'>    If I remember correctly from the Math literature, equalities of the type 0=0, 1=1 or more general n=n could be referred also as trivial equalities. I tried to find, without success though, an exact definition of what is intended by trivial equality, the closest I could get is the Wikipedia’s content on the use of trivial adjective in Mathematics for objects that have a simple structure. As </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4504069619483744291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4504069619483744291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4504069619483744291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4504069619483744291'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/06/trivial-equalities-in-queries.html' title='Trivial Equalities in Queries'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2948819675370916728</id><published>2010-06-20T09:55:00.001-07:00</published><updated>2010-06-20T09:55:00.909-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>SSIS and Oracle</title><summary type='text'>    Making SSIS work with Oracle doesn’t seem to be a complicated task especially after several years of experience in doing that, though, as usual, something new appears in the landscape – new software versions, new requirements, an environment with its own particularities, etc. In general, when an application needs a connection to an Oracle server, is needed to install on the client computer </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2948819675370916728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2948819675370916728' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2948819675370916728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2948819675370916728'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/06/ssis-and-oracle.html' title='SSIS and Oracle'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3002935016354844271</id><published>2010-06-20T04:55:00.001-07:00</published><updated>2010-06-20T05:05:09.968-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregate functions'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregate window functions'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Troubleshooting – Part III: Troubleshooting query issues: Logical errors</title><summary type='text'>    In last post I provided some general guidelines on how to troubleshoot query issues related to errors thrown by the database engine. That’s a fortunate case, because engine’s validation shows that something went wrong. I’m saying fortunate because there are also cases in which there are also logical errors that result in unexpected output, and the errors could remain even for years </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3002935016354844271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3002935016354844271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3002935016354844271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3002935016354844271'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/06/troubleshooting-part-iii.html' title='Troubleshooting – Part III: Troubleshooting query issues: Logical errors'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1440109659932462417</id><published>2010-06-20T03:06:00.001-07:00</published><updated>2010-06-20T03:06:16.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Troubleshooting – Part II: Troubleshooting query issues: Errors</title><summary type='text'>    Some weeks ago I wrote a post on troubleshooting, looking at the topic from problem solving perspective. In what concerns the troubleshooting of SQL scripts, now it depends also on the type of DML statement used or on the type of issues the developer deals with – errors thrown by the database engine, wrong number of records returned by a query, performance, accessibility or reusability </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1440109659932462417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1440109659932462417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1440109659932462417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1440109659932462417'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/06/troubleshooting-part-ii-troubleshooting.html' title='Troubleshooting – Part II: Troubleshooting query issues: Errors'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6971212689390523356</id><published>2010-06-03T12:52:00.001-07:00</published><updated>2010-06-03T13:00:06.348-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data quality'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><title type='text'>Reports’ Creation - Part I: Addressable Questions</title><summary type='text'>    The creation of a database-based report of any type involves most of the times several iterations until all the requirements are gathered, the query and eventually the final report are created, the reports gets tested, the issues related to deliveries and requirements mitigated, etc. Typically the steps involved in the creation of a report are straightforward for the developer, though for the</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6971212689390523356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6971212689390523356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6971212689390523356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6971212689390523356'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/06/reports-creation-part-i-addressable.html' title='Reports’ Creation - Part I: Addressable Questions'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6636242822811164888</id><published>2010-06-03T07:38:00.001-07:00</published><updated>2010-06-03T07:40:35.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='online resources'/><category scheme='http://www.blogger.com/atom/ns#' term='what&apos;s new'/><title type='text'>What's New #1</title><summary type='text'>Instead of Introduction         May is gone and it was quite a stressful month because given the fact that I had to start with a new job, a new position I will have to grow in, I had also to find a new apartment, move, install myself, so I barely had time for my blogs, the little time I had spending it reading stuff related to the new requirements, trying to improve my German, etc. Even so, I </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6636242822811164888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6636242822811164888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6636242822811164888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6636242822811164888'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/06/what-new-1.html' title='What&amp;#39;s New #1'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1380114795902428399</id><published>2010-04-24T02:45:00.001-07:00</published><updated>2010-04-24T02:45:26.090-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='problem solving'/><title type='text'>Troubleshooting – Part I: The Problem Solving Approach</title><summary type='text'>Introduction        In several occasions I observed that there are SQL and non-SQL developers who don’t know how to troubleshoot a programming problem in general, respectively a SQL-related issue in particular, and I’m not referring here to the complex problems that typically require the expertise of a specialist, but simple day to day situations: troubleshooting an error thrown by the database </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1380114795902428399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1380114795902428399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1380114795902428399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1380114795902428399'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/04/troubleshooting-part-i-problem-solving.html' title='Troubleshooting – Part I: The Problem Solving Approach'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-5231086070874853411</id><published>2010-04-21T05:51:00.001-07:00</published><updated>2010-04-21T05:51:23.095-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCTS'/><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><category scheme='http://www.blogger.com/atom/ns#' term='MCITP'/><title type='text'>To get or not Certified?!</title><summary type='text'>    To get or not certified?! That’s a question I asked myself several times along the years, and frankly it doesn’t have an easy answer because there are many aspects that need to be considered: previous education, targeted certification, availability of time, financial resources or learning material, required software, hand-on experience, certification’s costs, duration/frequency, objectives, </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/5231086070874853411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=5231086070874853411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5231086070874853411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5231086070874853411'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/04/to-get-or-not-certified.html' title='To get or not Certified?!'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6948189761016298110</id><published>2010-04-17T14:42:00.001-07:00</published><updated>2010-04-17T14:42:11.647-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='personal database'/><category scheme='http://www.blogger.com/atom/ns#' term='Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Learning SQL</title><summary type='text'>Introduction        One of the topics that appears in many database related groups or forums is from where and how new comers should start to learn SQL (Structured Query Language) in general, and specific vendor SQL features in particular. Two years back, in Learning something new post from my programming-grasps blog attempt, I wrote down my thoughts on how to approach learning new subjects in </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6948189761016298110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6948189761016298110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6948189761016298110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6948189761016298110'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/04/learning-sql.html' title='Learning SQL'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6292528341621391853</id><published>2010-04-05T09:05:00.001-07:00</published><updated>2010-04-05T09:09:43.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='CROSS APPLY'/><category scheme='http://www.blogger.com/atom/ns#' term='not-equal join'/><category scheme='http://www.blogger.com/atom/ns#' term='list of values'/><category scheme='http://www.blogger.com/atom/ns#' term='BETWEEN'/><category scheme='http://www.blogger.com/atom/ns#' term='IN'/><category scheme='http://www.blogger.com/atom/ns#' term='DateDiff'/><title type='text'>The Power of Joins – Part VI: Not-Equal Joins</title><summary type='text'>    SQL Server 2008 documentation mentions the not-equal joins without giving an explicit definition, the term appearing within the context of joining values in two columns that are not equal. On the other side the not-equal join denomination could be used to refer more generally to the joins whose join constraints involve comparison operators other than equal (“=”), for example &lt;, &gt;, &lt;&gt;, BETWEEN</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6292528341621391853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6292528341621391853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6292528341621391853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6292528341621391853'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/04/power-of-joins-part-vi-not-equal-joins.html' title='The Power of Joins – Part VI: Not-Equal Joins'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1422198872471571881</id><published>2010-04-03T11:31:00.001-07:00</published><updated>2010-04-04T05:43:26.959-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='INTERSECT'/><category scheme='http://www.blogger.com/atom/ns#' term='EXISTS'/><category scheme='http://www.blogger.com/atom/ns#' term='CROSS APPLY'/><category scheme='http://www.blogger.com/atom/ns#' term='semi-join'/><category scheme='http://www.blogger.com/atom/ns#' term='list of values'/><category scheme='http://www.blogger.com/atom/ns#' term='EXCEPT'/><category scheme='http://www.blogger.com/atom/ns#' term='anti-join'/><category scheme='http://www.blogger.com/atom/ns#' term='IN'/><title type='text'>The Power of Joins – Part V: Semi-Joins and Anti-Joins</title><summary type='text'>     An incursion in the world of joins is incomplete without approaching two other important techniques for writing queries: semi-joins and anti-joins, some of the techniques specific to them allowing to speed up queries and reduce queries’ complexity. An anti-join returns rows from the left table where no matches is found in the right table, while an semi-join returns returns rows from the left</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1422198872471571881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1422198872471571881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1422198872471571881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1422198872471571881'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/04/power-of-joins-part-v-semi-joins-and.html' title='The Power of Joins – Part V: Semi-Joins and Anti-Joins'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-7199775157465437981</id><published>2010-04-02T15:10:00.001-07:00</published><updated>2010-04-03T04:00:21.689-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='multi-joins'/><category scheme='http://www.blogger.com/atom/ns#' term='inline view'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='undocumented feature'/><title type='text'>The Power of Joins – Part IV: Multi-Joins Under Control</title><summary type='text'>       Few are the queries based only on the join between two tables, each additional table added to the query involving an additional join with one or more of the already considered tables. Such cases in which more than one join is involved in a query are referred as multi-joins or multiple joins, the joins could involve the same join operator or it can be a mixture of the horizontal or vertical</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/7199775157465437981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=7199775157465437981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7199775157465437981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7199775157465437981'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/04/power-of-joins-part-iv-multi-joins.html' title='The Power of Joins – Part IV: Multi-Joins Under Control'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-5178796651720791590</id><published>2010-04-02T06:58:00.001-07:00</published><updated>2010-04-02T07:18:24.232-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='JOIN syntax'/><category scheme='http://www.blogger.com/atom/ns#' term='set theory'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='inline view'/><category scheme='http://www.blogger.com/atom/ns#' term='vertical join'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>The Power of Joins – Part III: Vertical Joins</title><summary type='text'>Introduction         A vertical join allows the possibility of retrieving data from multiple datasets by combining the attributes from one or more datasets on the same row, being possible to include complex expressions using any combination of attributes. The join within a vertical join is based only on the attributes specified in the join constraint(s), typically each constraint taking the form </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/5178796651720791590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=5178796651720791590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5178796651720791590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5178796651720791590'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/04/power-of-joins-part-iii-vertical-joins.html' title='The Power of Joins – Part III: Vertical Joins'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_WSUNWp1KJOo/S7X3tRoVZJI/AAAAAAAAAW4/rdVayj6jFus/s72-c/vertical%20joins%20-%20inner%20join%20output_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1401873782963830921</id><published>2010-04-01T13:56:00.001-07:00</published><updated>2010-04-01T13:56:06.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Union All'/><category scheme='http://www.blogger.com/atom/ns#' term='INTERSECT'/><category scheme='http://www.blogger.com/atom/ns#' term='union'/><category scheme='http://www.blogger.com/atom/ns#' term='set theory'/><category scheme='http://www.blogger.com/atom/ns#' term='EXCEPT'/><category scheme='http://www.blogger.com/atom/ns#' term='horizontal join'/><title type='text'>The Power of Joins – Part II: Horizontal Joins</title><summary type='text'>Introduction       A horizontal join allows retrieving data from two or more datasets by merging/comparing the rows from each involved dataset, the join of rows being done on vertical, thus a row from the final result dataset containing only the attributes from one of the input datasets, the attributes being matched based on their order in the dataset (first attribute with first attribute from </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1401873782963830921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1401873782963830921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1401873782963830921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1401873782963830921'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/04/power-of-joins-part-ii-horizontal-joins.html' title='The Power of Joins – Part II: Horizontal Joins'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_WSUNWp1KJOo/S7UIWsjcDnI/AAAAAAAAAWg/nmhtoNS8VY0/s72-c/horizontal%20joins%20-%20union%20presentation_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1141629906597574374</id><published>2010-03-29T15:32:00.001-07:00</published><updated>2010-03-29T15:32:38.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='set theory'/><category scheme='http://www.blogger.com/atom/ns#' term='semi-join'/><category scheme='http://www.blogger.com/atom/ns#' term='horizontal join'/><category scheme='http://www.blogger.com/atom/ns#' term='vertical join'/><category scheme='http://www.blogger.com/atom/ns#' term='anti-join'/><title type='text'>The Power of Joins – Part I: Introduction</title><summary type='text'>     Joins are the heart of RDBMS, they allowing to retrieve data (bring data together in a single result dataset) from multiple (related) table-like objects (tables, views, user-defined functions) by defining how and which  records are selected from such objects. In order to reduce the complexity of such a topic I will introduce the joins with regard to tables, the concepts applying also to </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1141629906597574374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1141629906597574374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1141629906597574374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1141629906597574374'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/power-of-joins-part-i-introduction.html' title='The Power of Joins – Part I: Introduction'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4309893907616558060</id><published>2010-03-25T03:02:00.001-07:00</published><updated>2010-03-25T03:03:37.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='ERP'/><category scheme='http://www.blogger.com/atom/ns#' term='issues'/><title type='text'>A Reporting Guy’s Issues</title><summary type='text'>      For more than 6 years, between many other tasks, I was also the “reporting guy”, taking care of the ad-hoc reporting requirements, building one or two data warehouses and even two reporting frameworks in order to fulfill the reporting requirements within the enterprise I was working for. 99% of the reports were based on the two ERP systems (Oracle e-Business Suite &amp; IFS-iV) the customer had</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4309893907616558060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4309893907616558060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4309893907616558060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4309893907616558060'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/reporting-guys-issues.html' title='A Reporting Guy’s Issues'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2676835986635963972</id><published>2010-03-24T17:00:00.001-07:00</published><updated>2010-03-24T17:07:49.259-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data mart'/><category scheme='http://www.blogger.com/atom/ns#' term='DTS'/><category scheme='http://www.blogger.com/atom/ns#' term='ETL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><category scheme='http://www.blogger.com/atom/ns#' term='data warehouse'/><title type='text'>The Data Warehouse - Part I: An Unorthodox Introduction</title><summary type='text'>   Any discussion on data warehousing topics, even unconventional, can’t avoid to mention the two most widely adopted concepts in data warehousing, B. Inmon vs. R. Kimball’s methodologies. There is lot of ink consumed already on this topic and is difficult to come with something new, however I can insert in between my experience and personal views on the topic. From the beginning I have to state </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2676835986635963972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2676835986635963972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2676835986635963972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2676835986635963972'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/data-warehouse-part-i-unorthodox.html' title='The Data Warehouse - Part I: An Unorthodox Introduction'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6610766261521166673</id><published>2010-03-24T13:20:00.001-07:00</published><updated>2010-03-24T14:46:16.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='definition'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='data warehouse'/><title type='text'>Defining Concepts: The Stored Procedure Case</title><summary type='text'>      I just started to read the SQL Server Programmers Blog’s post on Stored Procedures  and I’m kind of having a problem with the first sentence: "A stored procedure is a group of Transact-Sql statements compiled into a single execution plan". Not sure if the respective statement was supposed to define what a stored procedure is or highlight its most important characteristics; if it's the first</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6610766261521166673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6610766261521166673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6610766261521166673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6610766261521166673'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/defining-concepts-stored-procedure-case.html' title='Defining Concepts: The Stored Procedure Case'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2228981353691085406</id><published>2010-03-17T12:45:00.001-07:00</published><updated>2010-03-17T13:31:52.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data quality'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Management'/><category scheme='http://www.blogger.com/atom/ns#' term='ERP'/><category scheme='http://www.blogger.com/atom/ns#' term='ERP implementations'/><category scheme='http://www.blogger.com/atom/ns#' term='fallacies'/><title type='text'>Preventing the Failure of ERP Implementations</title><summary type='text'>    Answering to Why many ERP implementations fall short of expectations and how to prevent failure? discussion  in LinkedIn’s Oracle ERP group, discussion based on a Webcast on the same topic, I tried to list a few of the possible reasons for failure as follows:   - not understanding what an ERP is about - functionality and intrinsic requirements;   - not evaluating/assessing ERP's functionality</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2228981353691085406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2228981353691085406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2228981353691085406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2228981353691085406'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/preventing-failure-of-erp.html' title='Preventing the Failure of ERP Implementations'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1354251912505247191</id><published>2010-03-16T08:59:00.001-07:00</published><updated>2010-03-16T09:11:55.462-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='FULL OUTER JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='IsNull'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='macro'/><category scheme='http://www.blogger.com/atom/ns#' term='DateDiff'/><title type='text'>Excel for SQL Developers – Part IV: Differences Between Two Datasets</title><summary type='text'>    One of the tasks which appears from time to time on my table is to determine the differences between two datasets coming from different systems or from the same system/source but taken at different points in time. Even if it’s fairly simple to write such a query, especially when the number of attributes is quite small, there is lot of repetitive work that needs to be done because typically </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1354251912505247191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1354251912505247191' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1354251912505247191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1354251912505247191'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/excel-for-sql-developers-part-iv.html' title='Excel for SQL Developers – Part IV: Differences Between Two Datasets'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_WSUNWp1KJOo/S5-q_HAM9PI/AAAAAAAAAWY/NiLR0DKai_Q/s72-c/Excel%20-%20Comparison%20Datasets_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4785749369503111557</id><published>2010-03-15T12:55:00.001-07:00</published><updated>2010-03-15T14:09:59.821-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='INFORMATION_SCHEMA'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='macro'/><title type='text'>Excel for SQL Developers – Part III: Creating a Stored Procedure from Table’s Metadata</title><summary type='text'>      In a previous post I was showing a simple technique for using stored procedures for inserting/updating data within SQL Server 2005+. From a rough estimation I think that about 80% of the stored procedures built for this purpose could use the same template, without including additional business logic. Given the fact that databases store metadata about their objects, table’s metadata could be</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4785749369503111557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4785749369503111557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4785749369503111557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4785749369503111557'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/excel-for-sql-developers-part-iii.html' title='Excel for SQL Developers – Part III: Creating a Stored Procedure from Table’s Metadata'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_WSUNWp1KJOo/S56QtZBtbbI/AAAAAAAAAWQ/55AqyTW5ZuE/s72-c/Excel%20-%20Get%20Stored%20Procedure_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8626914315175868314</id><published>2010-03-13T16:41:00.001-08:00</published><updated>2010-03-15T14:11:23.701-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><title type='text'>Saving Data With Stored Procedures</title><summary type='text'>    Without going too much into details on the benefits of stored procedures, in this post I will show a simple technique I usually like to use for database updates. It’s not rocket science, I bet many of the developers use similar approaches, and many more don’t! Stored procedures are the ideal place for storing your business logic, including insert/updates, in addition stored procedures being </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8626914315175868314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8626914315175868314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8626914315175868314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8626914315175868314'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/saving-data-with-stored-procedures.html' title='Saving Data With Stored Procedures'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1542249749649031469</id><published>2010-03-13T09:17:00.001-08:00</published><updated>2010-03-15T12:56:50.113-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='macro'/><category scheme='http://www.blogger.com/atom/ns#' term='insert'/><title type='text'>Excel for SQL Developers – Part II: Insert Statements</title><summary type='text'>    From time to time is required to load a bulk of data into a table, and even if SQL Server and Oracle provides tools for this purpose, there are also occasions when this needs to be done with statements, an insert statement needing to be prepared for each record from the dataset. It sounds like a task that could be easily done in Excel, isn’t it? For this purpose in order to concatenate the </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1542249749649031469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1542249749649031469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1542249749649031469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1542249749649031469'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/excel-for-non-excel-developers-part-ii.html' title='Excel for SQL Developers – Part II: Insert Statements'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_WSUNWp1KJOo/S5vIww0_97I/AAAAAAAAAWI/EsvcB_fLpqw/s72-c/Excel%20-%20Insert%20statement_thumb%5B7%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8709175537870716876</id><published>2010-03-13T07:49:00.001-08:00</published><updated>2010-03-15T14:14:10.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='list of values'/><category scheme='http://www.blogger.com/atom/ns#' term='macro'/><title type='text'>Excel for SQL Developers – Part I: Range to Delimited List of Values</title><summary type='text'>    For many SQL developers Excel could prove to be a useful tool in what concerns not only data analysis and manipulation but also in using its functionality for handling repetitive tasks. One of the simplest such examples I may thing of is the formatting of a list of values for use within a query.         Typically users are requesting to provide a report based on a list of values provided in </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8709175537870716876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8709175537870716876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8709175537870716876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8709175537870716876'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/excel-for-non-excel-developers-part-i.html' title='Excel for SQL Developers – Part I: Range to Delimited List of Values'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S5u0EFu3hwI/AAAAAAAAAWA/QRgM33znwlQ/s72-c/Excel%20-%20List%20of%20values%20formula_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-7881510171765903657</id><published>2010-03-13T06:33:00.001-08:00</published><updated>2010-03-13T06:33:44.324-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS Package'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='percentage sampling'/><title type='text'>SSIS 2008: Percentage Sampling Data Flow Transformation</title><summary type='text'>    One of the problems relatively difficult to address in the past was the random sampling within a SQL Server data set. Of course there is always Excel that could be used for this purpose just with a few tricks, though what do you do when working with huge source dataset? As we will see below SSIS 2008’s Percentage Sampling Data Flow Transformation allows easily addressing this problem.</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/7881510171765903657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=7881510171765903657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7881510171765903657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7881510171765903657'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/ssis-2008-percentage-sampling-data-flow.html' title='SSIS 2008: Percentage Sampling Data Flow Transformation'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S5uiPHOjgCI/AAAAAAAAAVo/3JCs8dND4_U/s72-c/SSIS%20-%20Percentage%20Sampling%20Transformation%20Editor_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1748938077606135122</id><published>2010-03-13T04:55:00.001-08:00</published><updated>2010-03-13T04:55:56.679-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS Package'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Aggregate'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Flow Task'/><title type='text'>SSIS: Aggregate Data Flow Transformation</title><summary type='text'>    At a first look the SSIS Aggregate Data Flow Transformation doesn’t seem to be so useful given the fact that the same functionality could be easily obtained with an aggregate query, which actually has more flexibility in what concerns data manipulation, however must be not forgotten that the power of transformations reside in the way they are combined in order to solve a problem and not in </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1748938077606135122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1748938077606135122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1748938077606135122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1748938077606135122'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/ssis-aggregate-data-flow-transformation.html' title='SSIS: Aggregate Data Flow Transformation'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S5uLVleJwZI/AAAAAAAAAVY/Dh5ZU_cQDAo/s72-c/SSIS%20-%20Aggregate%20Transformation%20Editor_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-4516107515324427920</id><published>2010-03-12T12:46:00.001-08:00</published><updated>2010-03-12T12:46:55.253-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Union All'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS Package'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><title type='text'>SSIS: The Union All Data Flow Transformation</title><summary type='text'>    In the yesterday’s post I was showing how to use the Conditional Split Data Flow Transformation in order to vertically partition a dataset based on a set of constraints, allowing thus to dump the data from each partition to its corresponding table. The inverse problem considers merging together the distributed partitions of the same dataset or distinct similar datasets into a common data set.</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/4516107515324427920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=4516107515324427920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4516107515324427920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/4516107515324427920'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/ssis-union-all-data-flow-transformation.html' title='SSIS: The Union All Data Flow Transformation'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S5qoLTjDW1I/AAAAAAAAAVA/mPb3oPbmJvk/s72-c/SSIS%20-%20Union%20All%20Editor_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6616951761103622129</id><published>2010-03-11T17:45:00.001-08:00</published><updated>2010-03-12T07:03:10.824-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS Package'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='Conditional Split'/><title type='text'>SSIS: The Conditional Split Data Flow Transformation</title><summary type='text'>    In Third Magic Class I was showing how to create a Data Flow Task using the SQL Server 2008 Business Intelligence Development Studio (BIDS), the respective SSIS package being based only on Products with the Product Category having the value ‘Bikes’. What if would be needed to create a table for ‘Components’ Product Category, and another one for ‘Clothes’ and ‘Accessories’? Normally this would</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6616951761103622129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6616951761103622129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6616951761103622129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6616951761103622129'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/ssis-conditional-split-transformation.html' title='SSIS: The Conditional Split Data Flow Transformation'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S5mcrlVPXgI/AAAAAAAAAUY/oVBnehiS1_A/s72-c/SSIS%20-%20Conditional%20Split_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-890003388985340732</id><published>2010-03-11T14:16:00.001-08:00</published><updated>2010-03-11T14:44:30.142-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle vs. SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='AVG'/><category scheme='http://www.blogger.com/atom/ns#' term='CROSS APPLY'/><category scheme='http://www.blogger.com/atom/ns#' term='correlated query'/><category scheme='http://www.blogger.com/atom/ns#' term='left join'/><category scheme='http://www.blogger.com/atom/ns#' term='inline view'/><category scheme='http://www.blogger.com/atom/ns#' term='GROUP BY'/><category scheme='http://www.blogger.com/atom/ns#' term='OUTER APPLY'/><title type='text'>Oracle vs. SQL Server: Averages – Part I</title><summary type='text'>     For many people working with averages is not a complicated topic at all, and that’s quite true, though as always it depends on how much you want to complicate everything. The average or the arithmetic mean is defined as the middle value of the values within a data set calculated as the sum of the values divided by the number of values:          RDBMS vendors provide similar functionality </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/890003388985340732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=890003388985340732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/890003388985340732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/890003388985340732'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/oracle-vs-sql-server-averages-part-i.html' title='Oracle vs. SQL Server: Averages – Part I'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S5lrwWLcvnI/AAAAAAAAATY/ussKUzaaaw0/s72-c/AVG%20-%20Simple%20Average_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-460641938277701800</id><published>2010-03-11T11:22:00.001-08:00</published><updated>2010-03-12T06:23:37.765-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS Package'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>SSIS Data Flow Task – Third Magic Class</title><summary type='text'>     Independently of the data sources or destinations used, all the ETL tasks have as cornerstone the simple creation of a Data Flow Task. If in the previous two tutorials I was showing how to export data from an Excel file (see First Magic Class), respectively an Oracle database (see Second Magic Class), using the SQL Server Import and Export Wizard, in this tutorial I will show how you can </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/460641938277701800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=460641938277701800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/460641938277701800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/460641938277701800'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/sql-server-data-flow-task-third-magic.html' title='SSIS Data Flow Task – Third Magic Class'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_WSUNWp1KJOo/S5lC7B7k0BI/AAAAAAAAASI/C31-ZGsasG4/s72-c/SSISNewProject_thumb3.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-7462018908445700319</id><published>2010-03-08T13:00:00.001-08:00</published><updated>2010-03-08T13:55:09.905-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CROSS APPLY'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='TSQL Challenge'/><title type='text'>TSQL Challenge 24</title><summary type='text'>     Beyond Relational came up with an interesting set of  TSQL Challenges contest that reached already its 25th round. Here’s my answer for TSQL Challenge 24, this being the first time I’ve attempted to come with a solution:   WITH CTE(LogID, EmpName, Activity, StartTime, TopStartTime, NoMinutes, StartDuration, DiffDuration, HasParentFlag, HasChildFlag, Level)  AS ( -- initialization query      </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/7462018908445700319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=7462018908445700319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7462018908445700319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7462018908445700319'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/tsql-challenge-24.html' title='TSQL Challenge 24'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6590121347471866193</id><published>2010-03-06T14:03:00.001-08:00</published><updated>2010-03-06T14:14:43.127-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle vs. SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='CROSS APPLY'/><category scheme='http://www.blogger.com/atom/ns#' term='analytic functions'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregate window functions'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='running totals'/><title type='text'>Oracle vs. SQL Server: Running Totals</title><summary type='text'>    One of the SQL Server 2005+ functionalities I kind of ignored in the past years is the CROSS APPLY operator that allows returning rows from a table-valued function of a correlated query, allowing for example to calculate running totals, cumulated amounts from the previous records and the current record in a data set. Before the introduction of CROSS APPLY operator such a query could be </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6590121347471866193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6590121347471866193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6590121347471866193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6590121347471866193'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/03/oracle-vs-sql-server-running-totals.html' title='Oracle vs. SQL Server: Running Totals'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6001658742117121560</id><published>2010-02-21T09:52:00.001-08:00</published><updated>2010-02-21T10:31:00.360-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='primary key'/><category scheme='http://www.blogger.com/atom/ns#' term='table-valued function'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><title type='text'>More Date-related Functionality – Part II</title><summary type='text'>Arithmetic Progression Sets       In yesterday’s post on the same topic I was showing how to create a sequence of dates on the fly with the help of common table expressions and multi-statement table-valued functions. I was mentioning that similar functionality could be obtained using a numeric sequence (interval), following to create the dates when calling the function. Here’s the function that </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6001658742117121560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6001658742117121560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6001658742117121560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6001658742117121560'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/more-date-related-functionality-part-ii.html' title='More Date-related Functionality – Part II'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3871377091719982446</id><published>2010-02-20T09:35:00.001-08:00</published><updated>2010-02-21T09:51:40.139-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='table-valued function'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><title type='text'>More Date-related Functionality – Part I</title><summary type='text'>Date Intervals Generation        In reports is sometimes requested to aggregate transactional data at day level, showing all existing data for a given time interval. This can be easily solved by limiting the time interval in the WHERE clause, though the problem is that it might happen that there are no data in the system for one or more dates and the users want to see that in the report. The </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3871377091719982446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3871377091719982446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3871377091719982446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3871377091719982446'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/more-date-functions.html' title='More Date-related Functionality – Part I'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S4AdVIYKnsI/AAAAAAAAAR8/eTyQcqr9LBs/s72-c/Date%20Calendar_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-5187001257605263184</id><published>2010-02-19T14:30:00.001-08:00</published><updated>2010-02-19T14:32:55.789-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010 CR'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server R2'/><title type='text'>Visual Studio 2010 CR doesn’t support SSIS Projects</title><summary type='text'>    I’ve installed today Visual Studio 2010 CR (Candidate Release) without any problems - nice look and feel, new types of projects targeting several new Microsoft solutions (SharePoint 2010, MS Office 2010, Windows Azure, ASP.NET MVC 2, Silverlight 3), everything looked nice until I wanted to create a SSIS project – unfortunately no support for SSIS 2005/2008 within VS 2010. As it seems I’m not </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/5187001257605263184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=5187001257605263184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5187001257605263184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5187001257605263184'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/visual-studio-2010-cr-doesnt-support.html' title='Visual Studio 2010 CR doesn’t support SSIS Projects'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1395411054927154641</id><published>2010-02-18T09:12:00.001-08:00</published><updated>2010-02-19T03:37:59.397-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EXEC'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregate functions'/><category scheme='http://www.blogger.com/atom/ns#' term='table-valued function'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic query'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><title type='text'>Just in CASE – Part V: Dynamic Queries (Update)</title><summary type='text'>    In the previous post on the same topic: Just in CASE - Part V: Dynamic queries I shown how the dynamic queries built inside of a stored procedure could be used in order to handle multiple parameters requests combinations. Such technique could be useful also when dealing with more example queries, for example when needed to show the same data but at different levels of detail, or when needed </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1395411054927154641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1395411054927154641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1395411054927154641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1395411054927154641'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/just-in-case-part-v-dynamic-queries.html' title='Just in CASE – Part V: Dynamic Queries (Update)'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2251997109543199447</id><published>2010-02-18T06:39:00.001-08:00</published><updated>2010-02-18T07:04:45.397-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CASE'/><category scheme='http://www.blogger.com/atom/ns#' term='list of values'/><category scheme='http://www.blogger.com/atom/ns#' term='IsNull'/><category scheme='http://www.blogger.com/atom/ns#' term='NullIf'/><category scheme='http://www.blogger.com/atom/ns#' term='Nulls'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic query'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><category scheme='http://www.blogger.com/atom/ns#' term='DateDiff'/><title type='text'>Just in CASE – Part V: Dynamic Queries</title><summary type='text'>    Stored procedures allows not only to encapsulate logic, enhance queries’ performance by cashing query plans or reduce the risks of injection by using parameters, they allow also altering the structure of a query at runtime, modifying for example the query based on the provided parameters. Such behavior is ideal when needed to base the logic of a query on a list of filters (filter controls) in</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2251997109543199447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2251997109543199447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2251997109543199447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2251997109543199447'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/just-in-case-part-iv-dynamic-queries.html' title='Just in CASE – Part V: Dynamic Queries'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-5994158855932983396</id><published>2010-02-15T14:31:00.001-08:00</published><updated>2010-02-15T14:51:13.596-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle vs. SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='CASE'/><category scheme='http://www.blogger.com/atom/ns#' term='NullIf'/><category scheme='http://www.blogger.com/atom/ns#' term='Nulls'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='NVL'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='DECODE'/><category scheme='http://www.blogger.com/atom/ns#' term='COALESCE'/><category scheme='http://www.blogger.com/atom/ns#' term='IsNull'/><title type='text'>Oracle vs. SQL Server: Handling Missing Dates</title><summary type='text'>    What do we do with missing values? How do they influence the data analysis? Two questions each developer should ask users when creating/modifying a report. In general for numbers things are pretty simple, just replace the NULL values with a 0, this impacting the report minimally. With Dates is a little more complicated because maybe is needed to remove records having a certain date null, </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/5994158855932983396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=5994158855932983396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5994158855932983396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/5994158855932983396'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/oracle-vs-sql-server-handling-missing.html' title='Oracle vs. SQL Server: Handling Missing Dates'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-1245392857704966055</id><published>2010-02-14T16:53:00.001-08:00</published><updated>2010-02-14T17:01:54.046-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle vs. SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='TO_CHAR'/><category scheme='http://www.blogger.com/atom/ns#' term='CONVERT'/><category scheme='http://www.blogger.com/atom/ns#' term='DATEPART'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='CAST'/><category scheme='http://www.blogger.com/atom/ns#' term='TO_DATE'/><category scheme='http://www.blogger.com/atom/ns#' term='DATENAME'/><title type='text'>Oracle vs. SQL Server: Date Conversion</title><summary type='text'>    During data conversions, data migrations or also during simple processing of data is requested to format dates to a given format, extract a given time unit or convert a string to a date data type. Even if Oracle and SQL Server provides several functions for this purpose, there are small techniques that could help make things easier.        In SQL Server the DatePart and DateName functions can</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/1245392857704966055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=1245392857704966055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1245392857704966055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/1245392857704966055'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/oracle-vs-sql-server-date-conversion.html' title='Oracle vs. SQL Server: Date Conversion'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S3ibEP1mulI/AAAAAAAAARs/YY1WhS6AzUc/s72-c/Date%20Oracle%20fomatting_thumb%5B5%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3973371598509398557</id><published>2010-02-14T07:00:00.001-08:00</published><updated>2010-02-14T07:59:55.735-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IsDate'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='TO_DATE'/><title type='text'>Oracle vs. SQL Server: Date Validation</title><summary type='text'>    When loading data into a table or even when performing date operations with text attributes that store date values, it’s mandatory to check whether the values represent a valid date, otherwise an error will be thrown, fact that could have negative impact on your logic. SQL Server provides the IsDate function for this purpose, the function returning a 1 if the value is a date, and 0 otherwise,</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3973371598509398557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3973371598509398557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3973371598509398557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3973371598509398557'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/oracle-vs-sql-server-date-validation.html' title='Oracle vs. SQL Server: Date Validation'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_WSUNWp1KJOo/S3gQCa_JSkI/AAAAAAAAARU/uNwm0xVK5kg/s72-c/Date%20IsDate%20SQL%20Server_thumb%5B5%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8214043567632654300</id><published>2010-02-13T20:35:00.001-08:00</published><updated>2010-02-13T20:40:17.050-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DateAdd'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><category scheme='http://www.blogger.com/atom/ns#' term='DateDiff'/><title type='text'>Oracle vs. SQL Server: Date Operations</title><summary type='text'>Difference between two dates         Often is needed to calculate the difference in days (or in any other time unit) between two dates, for example in order to determine the cycle/lead time, further analysis being done based on such data. In SQL Server the difference between two dates can be obtained using the DateDiff function which allows specifying the time unit used. Here’s the use for most </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8214043567632654300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8214043567632654300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8214043567632654300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8214043567632654300'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/oracle-vs-sql-server-date-operations.html' title='Oracle vs. SQL Server: Date Operations'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6393969065148708875</id><published>2010-02-12T09:12:00.001-08:00</published><updated>2010-02-12T09:30:57.640-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BOM'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><category scheme='http://www.blogger.com/atom/ns#' term='UDFs'/><category scheme='http://www.blogger.com/atom/ns#' term='hierarchies'/><title type='text'>Reports - Ways of Looking at Data – Part IV: Hierarchies - Update</title><summary type='text'>     While commenting on a post on User Defined Functions from SQL Server Programmers Blog I realized that I could use a multi-statement table-valued function in order to simulate recursive processing for ‘Identifying the top-most parent’ problem presented in Reports - Ways of Looking at Data – Part IV: Hierarchies. Some years back, I needed to create the BOM structure for a report based on </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6393969065148708875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6393969065148708875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6393969065148708875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6393969065148708875'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/reports-ways-of-looking-at-data-part-iv_12.html' title='Reports - Ways of Looking at Data – Part IV: Hierarchies - Update'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-8222338983487124761</id><published>2010-02-09T17:49:00.000-08:00</published><updated>2010-02-09T18:02:02.689-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CONNECT BY'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='hierarchies'/><title type='text'>Hierarchies – The Oracle Solution</title><summary type='text'>    In yesterday’s post on hierarchy-based reports I was showing, using a BOM example, how hierarchy-related problems could be approached using common table expressions introduced starting with SQL Server 2005. Oracle’s approach to hierarchical queries is based on  CONNECT BY clause that allows to specify the join constraint between the table(s) used in the recursive logic and previous output. If</summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/8222338983487124761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=8222338983487124761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8222338983487124761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/8222338983487124761'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/hierarchies-oracle-solution.html' title='Hierarchies – The Oracle Solution'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WSUNWp1KJOo/S3ISSgdt-QI/AAAAAAAAAQU/5KvKrq4HQtM/s72-c/BOM+-+Oracle+query+simplified.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2181313615644874092</id><published>2010-02-08T18:12:00.000-08:00</published><updated>2010-02-08T18:31:45.852-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='hierarchies'/><title type='text'>Reports - Ways of Looking at Data – Part IV: Hierarchies</title><summary type='text'>    There is a special type of entities that when related to each other, the relations put together form a hierarchy. It’s the case of assemblies and the components they are made of, a component could be at its turn an assembly formed from smaller components, resulting thus a structure known as Bill of Materials (BoM). Take for example a laptop made of parts like the keyboard, modem, hard disk, </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2181313615644874092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2181313615644874092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2181313615644874092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2181313615644874092'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/reports-ways-of-looking-at-data-part-iv.html' title='Reports - Ways of Looking at Data – Part IV: Hierarchies'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WSUNWp1KJOo/S3DGAsed6LI/AAAAAAAAAPk/BwRM8UEfyAE/s72-c/BOM+-+Anchor+Member.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-6918612572788803439</id><published>2010-02-07T09:16:00.000-08:00</published><updated>2010-02-07T09:39:37.649-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS Package'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Export'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='AdventureWorks'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>SQL Server to Oracle Data Export – Second Magic Class</title><summary type='text'>    In a previous post I described the steps needed to be followed in order to export the data from SQL Server to Excel, this time I will describe the steps needed in order to export the data from SQL Server to Oracle. For this is requested to have Oracle database product installed on your computer, or in case you are having already an Oracle database server on the network then you’ll need only </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/6918612572788803439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=6918612572788803439' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6918612572788803439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/6918612572788803439'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/sql-server-to-oracle-data-export-second.html' title='SQL Server to Oracle Data Export – Second Magic Class'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WSUNWp1KJOo/S273szNqWcI/AAAAAAAAAPM/8aFNlK_qNXQ/s72-c/SSIS+-+Data+Link+Properties.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-7510868821208577985</id><published>2010-02-06T19:39:00.000-08:00</published><updated>2010-02-06T20:27:39.942-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informatica'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Quality Dimensions'/><category scheme='http://www.blogger.com/atom/ns#' term='data quality'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='data-driven organization'/><category scheme='http://www.blogger.com/atom/ns#' term='White Paper'/><category scheme='http://www.blogger.com/atom/ns#' term='Information Systems'/><title type='text'>The Data-Driven Enterprise</title><summary type='text'>    I read today ‘The Data-Driven Enterprise’ White Paper from Informatica, quite useful paper, especially when it comes from one of the leaders in integration software and services. In this paper the term data-driven enterprise refers to the organizations that are “able to take advantage of their data assets to work faster, better and smarter” [1], in order to achieve this state of art being </summary><link rel='related' href='http://www.informatica.com/downloads/7060_data_driven_wp_web.pdf' title='The Data-Driven Enterprise'/><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/7510868821208577985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=7510868821208577985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7510868821208577985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/7510868821208577985'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/data-driven-enterprise.html' title='The Data-Driven Enterprise'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-245650563782067780</id><published>2010-02-05T13:35:00.000-08:00</published><updated>2010-02-05T14:12:53.467-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS Package'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Export'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Wizarding an SSIS Package – First Magic Class</title><summary type='text'>    Sorry to disappoint you, this it’s not another story about Harry Potter, it’s just a post on how to create an SSIS package without any knowledge about SSIS or the components of an SSIS Package with the help of ‘SQL Server Import and Export Wizard’ available from the SQL Server 2008 Management Studio. Here are the steps needed to be followed in order to create a Package that exports the data </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/245650563782067780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=245650563782067780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/245650563782067780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/245650563782067780'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/wizarding-ssis-package-first-magic.html' title='Wizarding an SSIS Package – First Magic Class'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WSUNWp1KJOo/S2yQIs2pirI/AAAAAAAAANU/dM6h9raSnIo/s72-c/SSIS+-+Export+Wizard.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-2825562070349058231</id><published>2010-02-05T05:34:00.000-08:00</published><updated>2010-02-05T06:49:34.421-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='correlated sub-query'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='CASE'/><title type='text'>Just in CASE – Part IV: Other Scenarios</title><summary type='text'>    Two days ago I was looking on the Web on random posts to see whether I missed something important related to CASE function and I stumble over an old post of Craig S. Mullins, in one of the examples (See SQL Statement #5) there is a query similar with the one below:



    As can be seen on more than one branch of a CASE there is a correlated sub-query based on the same table, the aggregated </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/2825562070349058231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=2825562070349058231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2825562070349058231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/2825562070349058231'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/just-in-case-part-iv-other-scenarios.html' title='Just in CASE – Part IV: Other Scenarios'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WSUNWp1KJOo/S2whTAOZtII/AAAAAAAAAM8/Dzi88Q1LZ9Y/s72-c/Case+-+correlated+query+calls.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18730743.post-3695570108280003406</id><published>2010-02-04T07:46:00.000-08:00</published><updated>2010-02-04T12:14:22.795-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='PIVOT operator'/><category scheme='http://www.blogger.com/atom/ns#' term='JOIN'/><category scheme='http://www.blogger.com/atom/ns#' term='union'/><category scheme='http://www.blogger.com/atom/ns#' term='CASE'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Just In CASE – Part III: Quest for Performance</title><summary type='text'>Arranging branches

    Given the fact that the CASE function stops after the first match, in case there are no two expressions that evaluate to true for any same value, the CASE could be optimized for the best performance by arranging the branches in the order of the highest number of matches. For example taking the logic from the 3rd example from Part I and checking the number of occurrences </summary><link rel='replies' type='application/atom+xml' href='http://sql-troubles.blogspot.com/feeds/3695570108280003406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18730743&amp;postID=3695570108280003406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3695570108280003406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18730743/posts/default/3695570108280003406'/><link rel='alternate' type='text/html' href='http://sql-troubles.blogspot.com/2010/02/just-in-case-part-iii-quest-for.html' title='Just In CASE – Part III: Quest for Performance'/><author><name>Adrian</name><uri>http://www.blogger.com/profile/07612735744573114626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_WSUNWp1KJOo/SiEULc4z3hI/AAAAAAAAAEE/LV8ih9TtkY0/S220/Maria%60s+Wedding.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WSUNWp1KJOo/S2rxJdgIAuI/AAAAAAAAAL0/XNBqLcAcxso/s72-c/Case+Example+3.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
