Ну давай подумаем:
1. находим все одинаковые строки (безотносительно документов):
(SELECT lineno_, sp1, sp2, sp3,sp4 from Doc group by lineno_, sp1, sp2, sp3,sp4 having count(*)>1) as t_1
2. ну... например, джойним эту выборку с исходной таблицей и получаем количество строк
(SELECT d.iddoc, d.lineno_, d.sp1, d.sp2, d.sp3, d.sp4, COUNT(d.lineno_) as m_l from Doc d
LEFT JOIN () t_1 ON d.lineno_=t_1.lineno_, d.sp1=t_1.sp1, d.sp2=t_1.sp2, d.sp3=t_1.sp3, d.sp4=t_1.sp4
WHERE t_1.lineno_ IS NOT NULL
GROUP BY d.iddoc, d.lineno_, d.sp1, d.sp2, d.sp3, d.sp4) as d_1
3. Формируем выборку количества строк
(SELECT dd.iddoc, COUNT(dd.lineno_) as m_l FROM Doc dd GROUP BY dd.iddoc) as d_2
4. Соединяем полученные выборки между собой
SELECT DISTINCT d_1.iddoc FROM () d_1 LEFT JOIN () d_2 ON d_1.iddoc-d_2.iddoc and d_1.m_l=d_2.m_l