I have a query that inserts data from another table, into an empty table (the table is cleared once a day, and new data is put in once a day). Currently it looks like this:
x
INSERT INTO new
(website,
company,
address,
city,
state,
zip
SELECT f.website,
f.business,
f.[address line 1],
f.city,
f.state,
f.[zip code]
FROM [finaltable] f;
What I would like to do, is include a row called “COUNT” on the insert, that would be total number of records of the table “finaltable”.
Something like:
INSERT INTO new
(website,
company,
address,
city,
state,
zip,
count
SELECT f.website,
f.business,
f.[address line 1],
f.city,
f.state,
f.[zip code],
(SELECT COUNT(*) FROM finaltable) AS COUNT
FROM [finaltable] f;
But I have no idea how I would go about that, I’m not super familiar with subqueries like this.
Advertisement
Answer
One way is to use windowed COUNT
:
INSERT INTO new
(website,
company,
address,
city,
state,
zip,
[count])
SELECT f.website,
f.business,
f.[address line 1],
f.city,
f.state,
f.[zip code],
[count] = COUNT(*) OVER() -- count of rows returned by `SELECT`
FROM [finaltable] f;