Well, finally and after combining this question with this related problem I found a way to expand @set types to produce the desired output. It`s a bit tricky but basically straight forward.
So a @set gets the key to the header part via the options-field. Within the redefined setdriver the header is printed. Since the set does not hold any values the entryset command has to be run from within the (re)loaded headerdata:
\DeclareBibliographyDriver{set}{%
\edef\xs@mv@set{\abx@field@entrykey}%
\ifboolexpr{
test {\ifundef{\xs@mv@head}}
or
test {\ifblank{\xs@mv@head}}
}
{\entryset{}{}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}
{\entrydata*{\xs@mv@head}{\usedriver{}{\abx@field@entrytype}\finentrypunct%
% reload the set so we can access the header via saved
\entrydata*{\xs@mv@set}{
% don't issue \leavevmode inside here
\let\blx@leavevmode\relax
\setitemize{noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt}%
\begin{itemize}[label={\printfield{entrysetcount})},labelindent=0.5\labelnumberwidth,labelsep=1ex,itemindent=0pt,leftmargin=*]
\entryset{\item \ifcsdef{blx@bbx@multivolume\abx@field@savedentrytype}
{\edef\abx@field@entrytype{multivolume\abx@field@savedentrytype}}
{\message{^^Jxs Warning: BibliographyDriver blx@bbx@multivolume@\abx@field@entrytype\space undefined
^^J** Using fallback driver multivolumechild
^^J** If you get unexpected entries in the bibliography consider to create a new BibliographyDriver multivolume@\abx@field@savedentrytype.}%
\def\abx@field@entrytype{multivolumechild}}}{}%
\finentrypunct\end{itemize}\nopunct}}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}}
Within the entryset-loop the entrytype of each child is changed to a new driver printing only what was not provided in the header block. If there is a driver multivolume<child-entrytype> this special driver will be used, if not the generic fallback multivolumechild-driver kicks in. That allows to mix entrytypes within @set constructions.
What you get in the end is:

Thanx to moewe for all the hints related to this problem (and to all involved in the discussion).
MWE:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[backend=biber,style=numeric-comp,mcite,subentry,sorting=nty,sortsets=true]{biblatex}
\usepackage{enumitem}
\usepackage{hyperref}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{default}{family-given}
\DeclareFieldFormat{entrysetcount}{\mknumalph{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DefineBibliographyStrings{german}{
editor = {Hrsg},
editors = {Hrsg},
volumes = {B\"ande},
}
\makeatletter
\DeclareEntryOption[string]{multivolumehead}{\def\xs@mv@head{#1}}
\define@key{xs@multivolume}{multivolumehead}{\def\xs@mv@head{#1}}
\DeclareBibliographyDriver{multivolumechild}{%
\ifboolexpr{
test {\ifnamesequal{author}{savedauthor}}
or
test {\ifnameundef{author}}
}
{\nopunct}
{\printnames{author}%
\newunit\newblock}%
\iffieldundef{volume}
{}
{\printfield{volume}%
\printfield{part}%
\newunit\newblock}%
\usebibmacro{title}%
\newunit\newblock
\ifboolexpr{
test {\ifnamesequal{editor}{savededitor}}
or
test {\ifnameundef{editor}}
}{}
{\usebibmacro{byeditor+others}%
\newunit\newblock}%
\ifboolexpr{
test {\iflistsequal{location}{savedlocation}}
or
test {\iflistundef{location}}
}{}
{\printlist{location}}%<- typo
\ifboolexpr{
test {\iflistsequal{publisher}{savedpublisher}}
or
test {\iflistundef{publisher}}
} {\setunit*{\addcomma\space}}%
{\setunit*{\addcolon\space}%
\printlist{publisher}%
\setunit*{\addcomma\space}}%
\newunit\newblock%
\ifboolexpr{
test {\iffieldsequal{year}{savedyear}}
or
test {\iffieldundef{year}}
}{}
{\printdate%
\newunit\newblock}%
\ifboolexpr{
test {\iffieldsequal{isbn}{savedisbn}}
or
not togl {bbx:isbn}
}{}
{\printfield{isbn}}%
\newunit\newblock%
\usebibmacro{chapter+pages}%
}
\DeclareBibliographyDriver{set}{%
\edef\xs@mv@set{\abx@field@entrykey}%
\ifboolexpr{
test {\ifundef{\xs@mv@head}}
or
test {\ifblank{\xs@mv@head}}
}
{\entryset{}{}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}
{\entrydata*{\xs@mv@head}{\usedriver{}{\abx@field@entrytype}\finentrypunct%
% reload the set so we can access the header via saved
\entrydata*{\xs@mv@set}{
% don't issue \leavevmode inside here
\let\blx@leavevmode\relax
\setitemize{noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt}%
\begin{itemize}[label={\printfield{entrysetcount})},labelindent=0.5\labelnumberwidth,labelsep=1ex,itemindent=0pt,leftmargin=*]
\entryset{\item \ifcsdef{blx@bbx@multivolume\abx@field@savedentrytype}
{\edef\abx@field@entrytype{multivolume\abx@field@savedentrytype}}
{\message{^^Jxs Warning: BibliographyDriver blx@bbx@multivolume@\abx@field@entrytype\space undefined
^^J** Using fallback driver multivolumechild
^^J** If you get unexpected entries in the bibliography consider to create a new BibliographyDriver multivolume@\abx@field@savedentrytype.}%
\def\abx@field@entrytype{multivolumechild}}}{}%
\finentrypunct\end{itemize}\nopunct}}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}}
\makeatother
\renewcommand{\entrysetpunct}{\finentrypunct}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{fish:drugs,
mainsubtitle = {Drugs and Society},
year = {2006},
editor = {Jefferson M. Fish},
maintitle = {U.S.~public policy},
publisher = {Rowman \& Littlefield Publishers, Inc},
location = {Lanham, Maryland},
isbn = {0-7425-4245-9},
sortname = {Jefferson M. Fish},
sorttitle = {U.S. public policy Drugs and Society},
options = {dataonly},
}
@Set{set:fish:drugs,
entryset = {fish:drugs:gable:alt,fish:drugs:cleveland:use,fish:drugs:evans:intro},
options = {multivolumehead=fish:drugs},
}
@Inbook{fish:drugs:evans:intro,
crossref = {fish:drugs},
author = {Richard M. Evans and Stanley Neustadter},
chapter = {6},
title = {Legalization: An Introduction},
pages = {129-148},
sorttitle = {06 Legalization: An Introduction},
options = {dataonly},
}
@Inbook{fish:drugs:cleveland:use,
crossref = {fish:drugs},
author = {Mary M. Cleveland},
chapter = {9a},
title = {Use, 'Abuse', Adverse Health Effects, and Addiction},
pages = {197-200},
sorttitle = {09 Use, Abuse, Adverse Health Effects, and Addiction},
options = {dataonly},
}
@Inbook{fish:drugs:gable:alt,
crossref = {fish:drugs},
author = {Robert S. Gable},
chapter = {7},
title = {Acute Toxicity of Drugs versus Regulatory Status},
pages = {149-161},
sorttitle = {07 Acute Toxicity of Drugs versus Regulatory Status},
}
@article{doody,
author = {Terrence Doody},
title = {Hemingway's Style and {Jake's} Narration},
year = 1974,
volume = 4,
number = 3,
pages = {212-225},
langid = {english},
langidopts = {variant=american},
related = {matuz:doody},
relatedstring= {\autocap{e}xcerpt in},
journal = {The Journal of Narrative Technique},
annotation = {An \texttt{article} entry cited as an excerpt from a
\texttt{collection} entry. Note the format of the
\texttt{related} and \texttt{relatedstring} fields},
}
@collection{matuz:doody,
editor = {Roger Matuz},
title = {Contemporary Literary Criticism},
year = 1990,
volume = 61,
publisher = {Gale},
location = {Detroit},
pages = {204-208},
langid = {english},
langidopts = {variant=american},
annotation = {A \texttt{collection} entry providing the excerpt information
for the \texttt{doody} entry. Note the format of the
\texttt{pages} field},
}
@Book{A,
author = {René Goscinny and Albert Uderzo},
maintitle = {Asterix und Obelix},
year = {1959--2018},
publisher = {Dargaud},
location = {Paris},
volumes = {99},
options = {dataonly},
}
@Set{set:A,
entryset = {A:V1,A:V2,A:V3,A:V4,A:V5,A:V6},
options = {multivolumehead=A},
}
@Book{A:V1,
crossref = {A},
title = {Asterix der Gallier},
sorttitle = {Goscinny Rene Uderzo Albert Asterix und Obelix 01},
year = {1959},
isbn = {1234567890123},
volume = {1},
}
@Book{A:V2,
crossref = {A},
title = {Asterix und Kleopatra},
sorttitle = {Goscinny Rene Uderzo Albert Asterix und Obelix 02},
year = {1968},
isbn = {2345678901234},
volume = {2},
}
@Book{A:V3,
crossref = {A},
title = {Asterix als Gladiator},
sorttitle = {Goscinny Rene Uderzo Albert Asterix und Obelix 03},
year = {1969},
isbn = {3456789012345},
volume = {3},
}
@Book{A:V4,
crossref = {A},
title = {Der Kampf der Häuptlinge},
sorttitle = {Goscinny Rene Uderzo Albert Asterix und Obelix 04},
year = {1969},
isbn = {4567890123456},
volume = {4},
}
@Book{A:V5,
crossref = {A},
title = {Die goldene Sichel},
sorttitle = {Goscinny Rene Uderzo Albert Asterix und Obelix 05},
year = {1970},
isbn = {5678901234567},
volume = {5},
}
@Book{A:V6,
crossref = {A},
title = {Tour de France},
sorttitle = {Goscinny Rene Uderzo Albert Asterix und Obelix 06},
year = {1970},
isbn = {6789012345678},
volume = {6},
}
@Book{DHS:base,
editor = {{Deutsche Hauptstelle für Suchtfragen e.~V.}},
sortname = {{Deutsche Hauptstelle für Suchtfragen}},
year = {2017},
url = {www.dhs.de},
urldate = {2018-04-30},
maintitle = {Suchtmedizinische Reihe},
options = {dataonly},
}
@Book{DHS:nik,
crossref = {DHS:base},
title = {Tabakabhängigkeit},
sorttitle = {Deutsche Hauptstelle für Suchtfragen Suchtmedizinische Reihe 01},
volume = {1},
isbn = {978-3-937587-00-4},
}
@Book{DHS:alk,
crossref = {DHS:base},
title = {Alkoholabhängigkeit},
sorttitle = {Deutsche Hauptstelle für Suchtfragen Suchtmedizinische Reihe 02},
volume = {2},
isbn = {978-3-937587-01-1},
}
@Book{DHS:drogen,
crossref = {DHS:base},
title = {Drogenabhängigkeit},
sorttitle = {Deutsche Hauptstelle für Suchtfragen Suchtmedizinische Reihe 04},
volume = {4},
isbn = {978-3-937587-03-5},
}
@Set{DHS:SMR,
crossref = {DHS:base},
entryset = {DHS:alk,DHS:nik,DHS:drogen},
options = {multivolumehead=DHS:base},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}\parindent=0pt\relax\parskip=2ex\relax
\nocite{*}
\fullcite{fish:drugs}
Cleveland in \cite{set:fish:drugs} says\supercite{fish:drugs:gable:alt} something.\msupercite{fish:drugs:gable:alt,fish:drugs:cleveland:use,fish:drugs:evans:intro}
Be adviced that after heavy stuff like \mcite{DHS:nik,DHS:alk} you should relax\msupercite{set:A} a bit.
\fullcite{fish:drugs:gable:alt}
\printbibliography
\end{document}
\endinput
enumeratefailed because of the delayed execution of punctuation commands in the punctuation tracker. I uncovered an undesired behaviour in therelatedpunctuation handling, but didn't get anywhere. Maybe@setis easier ... – moewe Dec 05 '18 at 13:44author = {{Mary M.} Cleveland},andauthor = {{Robert S.} Gable},should not be necessary. The braces ineditor = {{Fish, Jefferson M.}},look outright wrong. – moewe Dec 05 '18 at 13:48enumeratetoabx@macro@begrelatedloopandabx@macro@endrelatedloopwith\csapptoright now - looks promising, 'just' have to remove the last hooked delimiter somehow... (working on the code moewe provided in this answer [https://tex.stackexchange.com/q/459759/35864]) – AndiW Dec 05 '18 at 14:39\midsentenceor\blx@resetpunctdo not work although at least the first one should reset the punctuation tracker accoding to the manual (p. 256), right? So there must be a way to somehow clear it... – AndiW Dec 05 '18 at 20:19