Grant Fritchey

Grant Fritchey is a SQL Server MVP with over 20 years’ experience in IT including time spent in support and development. Grant has worked with SQL Server since version 6.0 back in 1995. He has developed in VB, VB.Net, C# and Java. Grant has authored books for Apress and Simple-Talk, and joined Red Gate as a Product Advocate in January 2011. Find Grant on Twitter @GFritchey or on his blog as the Scary DBA.

SQLServerCentral Editorial

Keep Sharing

I was given a little reward the other day. My son came home telling me that the manufacturing company he works for wants to build some custom test equipment using Arduino-style controller chips. I've been experimenting, pretty darned lightly so far, with these over the last year. He starts asking me about which controllers I […]

(2)

You rated this post out of 5. Change rating

2023-07-01

75 reads

SQLServerCentral Editorial

Trust!

The difference between a low trust society (few individuals within a trust circle outside your family and/or tribe) and a high trust society (general trust of individuals beyond immediate family/tribe associations) generally speaking can be measured as the difference between a low tech (low trust) and high tech (high trust) society. Yes, exceptions abound, but […]

(1)

You rated this post out of 5. Change rating

2023-06-03

103 reads

Blog Post

Why Put PostgreSQL in Azure

I’ve had people come up to me and say “PostgreSQL is open source and therefore license free. Why on earth would I put PostgreSQL in Azure?” Honestly, I think...

2023-05-17 (first published: )

246 reads

SQLServerCentral Editorial

Distracted

I've found myself to be very distracted this week. Concentration on the task at hand has proven to be a challenge. I'm pretty sure the cause is that I just came off of three weeks of travel, which can be exhausting. Concentration, like so many things in life, requires energy. No energy, no concentration. So, […]

(2)

You rated this post out of 5. Change rating

2023-05-06

111 reads

Blog Post

ChatGPT Lied To Me

I’ve been seeing more and more noise about how ChatGPT can help with technical stuff, writing code, all that. Well, I wanted to know how best to set up...

2023-04-21 (first published: )

812 reads

SQLServerCentral Editorial

Keeping Things Running

Today and tomorrow, as I write this, the Green Country Hamfest will be running up in Claremore, OK. Tomorrow morning, I'll be there to check out the tables and maybe pick up some new radio gear. I'll also be volunteering to help run the doors. Largely it involves just checking to be sure people paid […]

(1)

You rated this post out of 5. Change rating

2023-04-08

79 reads

Blogs

Optimising Costs: Strategies for Efficient Cloud Resource Management

By

Over time, I’ve realised that one of the hardest parts of cloud management isn’t...

Cost Visibility: Tracking and Analysing Your Cloud Spend

By

One of the biggest challenges I’ve faced in cloud operations is maintaining clear visibility...

Whiling away an afternoon, thinking

By

I come to Heathrow often. Today is likely somewhere close to 60 trips to...

Read the latest Blogs

Forums

Fun with JSON II

By Steve Jones - SSC Editor

Comments posted to this topic are about the item Fun with JSON II

Changing Data Types

By Steve Jones - SSC Editor

Comments posted to this topic are about the item Changing Data Types

Answering Questions On Dropped Columns

By Cláudio Silva

Comments posted to this topic are about the item Answering Questions On Dropped Columns

Visit the forum

Question of the Day

Fun with JSON II

I have some data in a table:

CREATE TABLE #test_data
(
    id INT PRIMARY KEY,
    name VARCHAR(100),
    birth_date DATE
);

-- Step 2: Insert rows  
INSERT INTO #test_data
VALUES
(1, 'Olivia', '2025-01-05'),
(2, 'Emma', '2025-03-02'),
(3, 'Liam', '2025-11-15'),
(4, 'Noah', '2025-12-22');
If I run this query, how many rows are returned?
SELECT t1.[key] AS row,
       t2.*
FROM OPENJSON(
     (
         SELECT t.* FROM #test_data AS t FOR JSON PATH
     )
             ) t1
    CROSS APPLY OPENJSON(t1.value) t2;

See possible answers