Multi-Column “Aggregation” MAX(), MIN(), COUNT() & Co with #SQLServer

It’s amazing to see how Microsoft keep on improving T-SQL. I was happily surprised to hear that GREATEST and LEAST are comming to Azure SQL Database from Version 2016 on… however only on Azure SQL. I’m currently ‘stuck’ with SqlServer 2017 on Premise (at least it is not any out of support version, like 2008R2)Continue reading “Multi-Column “Aggregation” MAX(), MIN(), COUNT() & Co with #SQLServer”

IDENTITY crisis — 4. IDENTITY-free #SQL programming

In Part 1 and Part 2, I set the background. In Part 3, I attacked a castle… it is now an infested ruins. We’re now building a better version of it (meeting the specification). Our new castle with relational fortifications. Who told database design is no fun? The environment I’m using a full fledged MicrosoftContinue reading “IDENTITY crisis — 4. IDENTITY-free #SQL programming”

IDENTITY crisis — 3. Relational Distancing

After Part 1 and Part 2. I want to embark on a code review. Playing the pathologist, running a small diagnostic on the diagnose table and its friends. Relationaaaaaaah By the all mighty, we shall invoke SchemaSpy, and the picture should speak: I now feel so sad for diagnose. Quarantine measures? The only relation isContinue reading “IDENTITY crisis — 3. Relational Distancing”

IDENTITY crisis — Part 1: a DISTINCT in disguise

Nothing looks more alike than 2 INT. I wish a warning could come if I ever try to join on 2 columns defined with IDENTITY. This started as a single post. But as I’m redacting, it gets longer. I plan/need to split it in 3 parts. That being said: If you want to make GodContinue reading “IDENTITY crisis — Part 1: a DISTINCT in disguise”

string_agg() does not max alone — #SQLServer #SQLNewBlogger

… and that surely is for good reason when you check how the nvarchar(max)/varchar(max) family is treated. As I moved from PostgreSQL to SQL Server 2008R2 one of the things I missed the most were all the out of the box aggregation functions. And one of them was string_agg(). We migrated last year from 2008R2Continue reading “string_agg() does not max alone — #SQLServer #SQLNewBlogger”

IDENTITY crisis — 2. Death by Surrogate

Nothing looks more alike than 2 INT. I wish a warning could come if I ever try to join on 2 columns defined with IDENTITY. Surrogate: 1 – Developer: 0 We left with … on v.id = c.id … and the query was: In our database on v.id = c.id should be something strange, createContinue reading “IDENTITY crisis — 2. Death by Surrogate”

Trigger the ORM

I’m not that a fan of ORM. Surely because I also don’t have to program with OOP language (C#, Java…). From the experience so far, it has mostly been a fight more than a cooperation. To be honest it may play well with the database but the software design decision are trickling down to theContinue reading “Trigger the ORM”

The clones are attacking

“Do the developers realize that the reason we store data is to report on it ?” Louis Davidson in Episode 178 of SQL Data Partners (around 19min 10sec ) I was faced with this question again as I could only witness the same piece of information inserted in two different tables. I’m not talking aboutContinue reading “The clones are attacking”

A unique error

This weekend, I listened to the SDU Show 81 podcast and the guest was Louis Davidson, the author my favorite SQL Server book. In this podcast, a common SQL anti-pattern came: not covering the natural keys with UNIQUE constraints, only having the surrogate being unique. I could only node in agreement. I take the timeContinue reading “A unique error”