Companies profitable three years in a row
Companies in Denmark with at least 250 employees and positive profit after tax in each of the three latest consecutive reporting years in DKK. Each period must be 330 to 400 days, with 1,000 to 1,100 days between the first start date and final end date.
The companies
Showing 1–10 of 45Sorted by: lowest annual profit across the three years, highest first · ties: name, then company ID
| # | Company | Lowest annual profit · DKK | Profitable periods | Employees | City | Period end | Evidence |
|---|---|---|---|---|---|---|---|
| 01 | OTICON A/SCVR 42334219 | 1,738,053,000 | 3 | 1,658 | Smørum | 2025-12-31 | |
Why does this company match?
| |||||||
| 02 | NORMAL A/SCVR 34883793 | 463,238,000 | 3 | 2,414 | Skanderborg | 2024-07-31 | |
Why does this company match?
| |||||||
| 03 | MICROSOFT DANMARK ApSCVR 13612870 | 342,294,000 | 3 | 461 | Kgs. Lyngby | 2024-06-30 | |
Why does this company match?
| |||||||
| 04 | NNE A/SCVR 13246009 | 291,406,000 | 3 | 1,542 | Virum | 2025-12-31 | |
Why does this company match?
| |||||||
| 05 | ARP-HANSEN HOTEL GROUP A/SCVR 54399219 | 265,551,000 | 3 | 688 | Gentofte | 2025-12-31 | |
Why does this company match?
| |||||||
| 06 | MT Højgaard Danmark A/SCVR 12562233 | 208,100,000 | 3 | 1,437 | Søborg | 2024-12-31 | |
Why does this company match?
| |||||||
| 07 | SEMCO MARITIME A/SCVR 25490762 | 198,441,000 | 3 | 1,095 | Esbjerg | 2025-12-31 | |
Why does this company match?
| |||||||
| 08 | 3SHAPE A/SCVR 25553489 | 159,819,344 | 3 | 475 | København K | 2024-12-31 | |
Why does this company match?
| |||||||
| 09 | Copenhagen Offshore Partners A/SCVR 36914793 | 109,119,000 | 3 | 290 | Nordhavn | 2025-12-31 | |
Why does this company match?
| |||||||
| 10 | VESTERGAARD COMPANY A/SCVR 70642212 | 96,419,000 | 3 | 423 | Roskilde | 2026-04-30 | |
Why does this company match?
| |||||||
Create a free account to see the remaining 35 companies.
Only active companies with entity accounts, not consolidated group accounts. The latest accounts must be in DKK. Employees means the reporting-period average, not the current headcount.
Scope and limitations
Reporting periods of 330–400 days within a combined 1,000–1,100 days. Missing profits are excluded. Group accounts are excluded.
Run your own company analysis in ChatGPT
- 1Create your free account
- 2Install Datapublica in your AI app
- 3Ask in your own words
Datapublica Companies in Denmark with at least 250 employees and positive profit after tax in each of the three latest consecutive reporting years in DKK. Each period must be 330 to 400 days, with 1,000 to 1,100 days between the first start date and final end date.
Read and copy all prompts
- Companies in Denmark with at least 250 employees and positive profit after tax in each of the three latest consecutive reporting years in DKK. Each period must be 330 to 400 days, with 1,000 to 1,100 days between the first start date and final end date.
- Companies in Denmark with at least 250 employees and positive profit after tax in each of the three latest consecutive reporting years in DKK. Each period must be 330 to 400 days, with 1,000 to 1,100 days between the first start date and final end date. Restrict the list to Aarhus.
- Companies in Denmark with at least 250 employees and positive profit after tax in each of the three latest consecutive reporting years in DKK. Each period must be 330 to 400 days, with 1,000 to 1,100 days between the first start date and final end date. Include company addresses.
Our AI performs advanced analyses of Danish companies for you
You don’t need to write SQL to combine data and create advanced extracts. Our AI does that for you; just ask a question. Here is how the analysis Companies profitable three years in a row was created using SQL and Datapublica’s database.
WITH ranked AS (
SELECT *, row_number() OVER (PARTITION BY cvr_number ORDER BY reporting_period_end DESC, publication_timestamp DESC, filing_id DESC, reporting_currency) AS rn
FROM gold.mart_company_financials_annual_scoped
WHERE statement_scope = 'entity'
), f AS (SELECT * FROM ranked WHERE rn = 1 AND reporting_currency = 'DKK'),
base AS (
SELECT p.cvr_number, p.company_name, p.city, p.registered_address_slug, p.registered_address_identity, p.registered_address_formatted, p.founded_at,
f.reporting_period_start, f.reporting_period_end, f.average_employees AS employees,
f.operating_profit, f.profit_after_tax AS profit, f.equity, f.revenue
FROM gold.mart_company_profile p JOIN f ON p.cvr_number = f.cvr_number
WHERE p.is_active = true
), history AS (SELECT cvr_number, reporting_period_start, reporting_period_end, reporting_period_days, reporting_currency, profit_after_tax, average_employees, rn FROM ranked WHERE rn <= 3), sequenced AS (SELECT *, lag(try_cast(reporting_period_end AS DATE)) OVER(PARTITION BY cvr_number ORDER BY reporting_period_end) AS previous_end FROM history), profitable AS (SELECT cvr_number, min(profit_after_tax) AS minimum_profit, min(reporting_period_start) AS first_period, count(*) AS periods FROM sequenced GROUP BY cvr_number HAVING count(*) = 3 AND count(*) FILTER(WHERE previous_end IS NOT NULL AND try_cast(reporting_period_start AS DATE) <> previous_end + 1) = 0 AND min(profit_after_tax) > 0 AND count(profit_after_tax) = 3 AND count(DISTINCT reporting_currency) = 1 AND min(reporting_currency) = 'DKK' AND min(reporting_period_days) >= 330 AND max(reporting_period_days) <= 400 AND sum(reporting_period_days) = date_diff('day',min(try_cast(reporting_period_start AS DATE)),max(try_cast(reporting_period_end AS DATE))) + 1 AND date_diff('day',min(try_cast(reporting_period_start AS DATE)),max(try_cast(reporting_period_end AS DATE))) BETWEEN 1000 AND 1100)
SELECT base.*, minimum_profit, first_period, periods, count(*) OVER() AS total_matches
FROM base JOIN profitable USING(cvr_number)
WHERE base.employees >= 250
ORDER BY minimum_profit DESC NULLS LAST, base.company_name ASC, base.cvr_number ASCCompanies profitable three years in a row
Looking for profitable companies, businesses making a profit or companies profitable for several years? We ran the analysis using Datapublica company data. The results are listed above: 45 companies match the stated criteria. View the first 10 here and the full list with a free account.
Sources and update
CVR records and published accounts from Virk are normalized and joined in Datapublica data marts. This list is a saved result of the SQL query above.
Extracted: 2026-10-10T09:01:15.367Z
build_a7ad137f038b0101c1bfCVR / Virk ↗