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 387Sorted 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 | LEGO SYSTEM A/SCVR 47458714 | 10,912,000,000 | 3 | 6,257 | Billund | 2025-12-31 | |
Why does this company match?
| |||||||
| 02 | BESTSELLER A/SCVR 88216512 | 3,711,000,000 | 3 | 2,591 | Brande | 2025-07-31 | |
Why does this company match?
| |||||||
| 03 | OTICON A/SCVR 42334219 | 1,738,053,000 | 3 | 1,658 | Smørum | 2025-12-31 | |
Why does this company match?
| |||||||
| 04 | Sparekassen DanmarkCVR 64806815 | 1,510,286,000 | 3 | 1,604 | Vrå | 2025-12-31 | |
Why does this company match?
| |||||||
| 05 | JYSK A/SCVR 13590400 | 1,087,789,000 | 3 | 2,271 | Brabrand | 2025-08-31 | |
Why does this company match?
| |||||||
| 06 | OK A.M.B.A.CVR 39170418 | 844,285,000 | 3 | 857 | Viby J | 2024-12-31 | |
Why does this company match?
| |||||||
| 07 | RADIOMETER MEDICAL ApSCVR 27509185 | 841,100,000 | 3 | 1,194 | Brønshøj | 2025-12-31 | |
Why does this company match?
| |||||||
| 08 | SKANDINAVISK MOTOR CO. A/SCVR 70515113 | 754,428,000 | 3 | 331 | Brøndby | 2025-12-31 | |
Why does this company match?
| |||||||
| 09 | VELUX A/SCVR 30003519 | 566,000,000 | 3 | 1,432 | Hørsholm | 2025-12-31 | |
Why does this company match?
| |||||||
| 10 | UNOMEDICAL A/SCVR 64153315 | 534,579,000 | 3 | 549 | Lejre | 2024-12-31 | |
Why does this company match?
| |||||||
Create a free account to see the remaining 377 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 searches and analyses by connecting Datapublica to your AI agent (for example Claude, Codex or ChatGPT Work)
- 1Create your free account
- 2Connect Datapublica through MCP
- 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: 387 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-09-08T11:15:54.873Z
build_fb46f9560427cb0da964CVR / Virk ↗