# Companies profitable three years in a row

Canonical: https://staging.datapublica.dk/en/analyses/overskud-tre-aar
Data snapshot: 2026-10-10 · build_a7ad137f038b0101c1bf
Analysis run: 2026-10-10
Matches: 45 · Showing: 10 · Page: 1

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.
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.
Sorted by: lowest annual profit across the three years, highest first · ties: name, then company ID
Reporting periods of 330–400 days within a combined 1,000–1,100 days. Missing profits are excluded. Group accounts are excluded.

## Companies

| Company | Lowest annual profit · DKK | Profitable periods | Employees | City | Period end |
| --- | --- | --- | --- | --- | --- |
| [OTICON A/S](https://datapublica.dk/en/companies/42334219) · 42334219 | 1,738,053,000 | 3 | 1,658 | Smørum | 2025-12-31 |
| [NORMAL A/S](https://datapublica.dk/en/companies/34883793) · 34883793 | 463,238,000 | 3 | 2,414 | Skanderborg | 2024-07-31 |
| [MICROSOFT DANMARK ApS](https://datapublica.dk/en/companies/13612870) · 13612870 | 342,294,000 | 3 | 461 | Kgs. Lyngby | 2024-06-30 |
| [NNE A/S](https://datapublica.dk/en/companies/13246009) · 13246009 | 291,406,000 | 3 | 1,542 | Virum | 2025-12-31 |
| [ARP-HANSEN HOTEL GROUP A/S](https://datapublica.dk/en/companies/54399219) · 54399219 | 265,551,000 | 3 | 688 | Gentofte | 2025-12-31 |
| [MT Højgaard Danmark A/S](https://datapublica.dk/en/companies/12562233) · 12562233 | 208,100,000 | 3 | 1,437 | Søborg | 2024-12-31 |
| [SEMCO MARITIME A/S](https://datapublica.dk/en/companies/25490762) · 25490762 | 198,441,000 | 3 | 1,095 | Esbjerg | 2025-12-31 |
| [3SHAPE A/S](https://datapublica.dk/en/companies/25553489) · 25553489 | 159,819,344 | 3 | 475 | København K | 2024-12-31 |
| [Copenhagen Offshore Partners A/S](https://datapublica.dk/en/companies/36914793) · 36914793 | 109,119,000 | 3 | 290 | Nordhavn | 2025-12-31 |
| [VESTERGAARD COMPANY A/S](https://datapublica.dk/en/companies/70642212) · 70642212 | 96,419,000 | 3 | 423 | Roskilde | 2026-04-30 |

## Evidence per company

### OTICON A/S · 42334219
- City: Smørum
- Registered address: Kongebakken 9, 2765 Smørum
- Incorporated: 1957-12-30
- Period start: 2025-01-01
- Period end: 2025-12-31
- Employees: 1,658
- Operating profit · DKK: 2,259,212,000
- Net profit · DKK: 1,738,053,000
- Equity · DKK: 7,470,698,000
- Revenue · DKK: 7,602,355,000
- Lowest annual profit · DKK: 1,738,053,000
- First period start: 2023-01-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-2d7040d3-27a6-468e-b305-0c9f9364b669/kongebakken-9-2765-smoerum)

### NORMAL A/S · 34883793
- City: Skanderborg
- Registered address: Godthåbsvej 41, 8660 Skanderborg
- Incorporated: 2012-12-12
- Period start: 2023-08-01
- Period end: 2024-07-31
- Employees: 2,414
- Operating profit · DKK: 334,445,000
- Net profit · DKK: 676,692,000
- Equity · DKK: 1,826,637,000
- Revenue · DKK: 9,192,891,000
- Lowest annual profit · DKK: 463,238,000
- First period start: 2021-08-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-b2b24ddf-6d34-41dd-b0e0-2de889387b41/godthaabsvej-41-8660-skanderborg)

### MICROSOFT DANMARK ApS · 13612870
- City: Kgs. Lyngby
- Registered address: Kanalvej 7, 2800 Kgs. Lyngby
- Incorporated: 1989-11-01
- Period start: 2023-07-01
- Period end: 2024-06-30
- Employees: 461
- Operating profit · DKK: 594,033,000
- Net profit · DKK: 486,420,000
- Equity · DKK: 1,419,359,000
- Revenue · DKK: 12,576,720,000
- Lowest annual profit · DKK: 342,294,000
- First period start: 2021-07-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-7e789945-2b85-485a-80a8-47365b063d9d/kanalvej-7-2800-kgs-lyngby)

### NNE A/S · 13246009
- City: Virum
- Registered address: Bredevej 2, 2830 Virum
- Incorporated: 1989-07-01
- Period start: 2025-01-01
- Period end: 2025-12-31
- Employees: 1,542
- Operating profit · DKK: 529,793,000
- Net profit · DKK: 385,296,000
- Equity · DKK: 670,320,000
- Revenue · DKK: 4,555,648,000
- Lowest annual profit · DKK: 291,406,000
- First period start: 2023-01-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-dec932ac-52ce-480c-871b-c3d4598407da/bredevej-2-2830-virum)

### ARP-HANSEN HOTEL GROUP A/S · 54399219
- City: Gentofte
- Registered address: Nybrovej 75, 2820 Gentofte
- Incorporated: 1975-07-01
- Period start: 2025-01-01
- Period end: 2025-12-31
- Employees: 688
- Operating profit · DKK: 454,471,000
- Net profit · DKK: 265,551,000
- Equity · DKK: 4,597,704,000
- Revenue · DKK: 1,682,409,000
- Lowest annual profit · DKK: 265,551,000
- First period start: 2023-01-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-0a3f50a3-e8ec-32b8-e044-0003ba298018/nybrovej-75-2820-gentofte)

### MT Højgaard Danmark A/S · 12562233
- City: Søborg
- Registered address: Knud Højgaards Vej 7, 2860 Søborg
- Incorporated: 1987-05-10
- Period start: 2024-01-01
- Period end: 2024-12-31
- Employees: 1,437
- Operating profit · DKK: 332,000,000
- Net profit · DKK: 297,100,000
- Equity · DKK: 1,371,300,000
- Revenue · DKK: 5,967,800,000
- Lowest annual profit · DKK: 208,100,000
- First period start: 2022-01-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-f938b685-3a45-406d-bcec-c61f92a4bc08/knud-hoejgaards-vej-7-2860-soeborg)

### SEMCO MARITIME A/S · 25490762
- City: Esbjerg
- Registered address: Esbjerg Brygge 30, 6700 Esbjerg
- Incorporated: 2000-06-29
- Period start: 2025-01-01
- Period end: 2025-12-31
- Employees: 1,095
- Operating profit · DKK: 178,019,000
- Net profit · DKK: 198,441,000
- Equity · DKK: 667,161,000
- Revenue · DKK: 3,887,699,000
- Lowest annual profit · DKK: 198,441,000
- First period start: 2023-01-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-adc0b9c0-16b2-4def-91a4-de7e613e1b01/esbjerg-brygge-30-6700-esbjerg)

### 3SHAPE A/S · 25553489
- City: København K
- Registered address: Holmens Kanal 7, 1060 København K
- Incorporated: 2000-07-17
- Period start: 2024-01-01
- Period end: 2024-12-31
- Employees: 475
- Operating profit · DKK: 1,095,063,000
- Net profit · DKK: 876,777,000
- Equity · DKK: 1,296,330,000
- Revenue · DKK: 1,824,427,000
- Lowest annual profit · DKK: 159,819,344
- First period start: 2022-01-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-480d898e-6cb3-4819-bb36-72ef328af324/holmens-kanal-7-1060-koebenhavn-k)

### Copenhagen Offshore Partners A/S · 36914793
- City: Nordhavn
- Registered address: Orientkaj 22 2, 2150 Nordhavn
- Incorporated: 2015-06-05
- Period start: 2025-01-01
- Period end: 2025-12-31
- Employees: 290
- Operating profit · DKK: 223,557,000
- Net profit · DKK: 172,193,000
- Equity · DKK: 541,260,000
- Revenue · DKK: 823,146,000
- Lowest annual profit · DKK: 109,119,000
- First period start: 2023-01-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-69ab06c7-79f0-42bc-9caa-1b5aeecf07bb-unit-0e0949a4d7142cba5d0b/orientkaj-22-2-2150-nordhavn)

### VESTERGAARD COMPANY A/S · 70642212
- City: Roskilde
- Registered address: Skullebjerg 31, 4000 Roskilde
- Incorporated: 1982-11-30
- Period start: 2025-05-01
- Period end: 2026-04-30
- Employees: 423
- Operating profit · DKK: 201,308,000
- Net profit · DKK: 170,644,000
- Equity · DKK: 1,033,606,000
- Revenue · DKK: 1,204,520,000
- Lowest annual profit · DKK: 96,419,000
- First period start: 2023-05-01
- Profitable periods: 3
- [View address](https://datapublica.dk/en/addresses/dar-a7b8d561-0904-4c72-b4df-2c87ee82f270/skullebjerg-31-4000-roskilde)

[Create a free account to view the full list](https://staging.datapublica.dk/en/signup?redirectTo=%2Fen%2Fanalyses%2Foverskud-tre-aar)

## Our AI performs advanced analyses of Danish companies for you

1. Select latest accounts: Rank entity accounts by period end and publication. Use the latest if its currency is DKK.
2. Join company data: Join the accounts with company ID, name, address and incorporation date. Keep active companies.
3. Find relevant records: Check that the three latest consecutive annual periods all have positive net profit.
4. Filter the list: 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. count(*) OVER() counts all matches.
5. Sort the results: Sort by lowest annual profit across the three years, highest first · ties: name, then company ID.

One row per company.

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.
Sorted by: lowest annual profit across the three years, highest first · ties: name, then company ID
## SQL

```sql
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 ASC
```

## From source to answer

Official CVR data and accounts → normalized identities, ownership stakes and periods → data marts → validated SQL → this result list.

Source: datapublica.dk
[CVR / Virk](https://datacvr.virk.dk/)

## Ask your own question

- 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.

[ChatGPT](https://datapublica.dk/agents/chatgpt) · [Claude](https://datapublica.dk/agents/claude) · [Codex](https://datapublica.dk/agents/codex)


## Companies 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 list above shows the results: 45 companies match the stated criteria.
