filecontents: select rows of group to display

Use datatool for this:

enter image description here

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{product.tex}
%Type =1,2...10
No,Type,Name,Description
1,1,A1,D1
2,1,A1,D2
3,1,A1,D3
30,1,A1,D30
31,2,A2,D31
131,2,A2,D131
132,3,A3,D132
133,3,A3,D133
134,3,A3,D134
249,4,A4,D249
1000,10,A10,D1000
\end{filecontents*}

\usepackage{datatool}

\DTLloaddb[autokeys=false]{products}{product.tex}

\newcommand{\printtype}[1]{%
  \par
  \section*{Type #1}
  \DTLforeach*
    [\DTLiseq{\Type}{#1}]% Condition
    {products}% Database
    {\No=No,\Type=Type,\Name=Name,\Description=Description}{%
    \noindent\Name \quad \Description\par
  }% 
}

\begin{document}

Here is some text.

\printtype{1}

Some breaking text here.

\printtype{3}

And then some final text.

\end{document}

The \printtype{<type>} command uses \DTLforeach to cycle through the products database and print only items where the \Type equals <type>. You can format the presentation however you want.


This is an answer heavily based on this answer. The main point here is to remark that you need to do \pgfplotsinvokeforeach in order to loop over the types you want typeset, and not \foreach.

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{product.dat}
No.,Type,Name,Description
1, 1, A1,D1
2, 1, A1,D2
30, 1, A1, D30
31, 2, A2, D31
131,2, A2, D131
132,3,A3,D132
249,4,A4,D249
1.000,10, A10,D1000
\end{filecontents*}
\usepackage{amsmath,amssymb}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}
\begin{document}
\pgfplotstableread[col sep=comma]{product.dat}{\data}
\pgfplotsinvokeforeach{1,3}{
\subsection*{\boldmath$\text{Type}=#1$}
\pgfplotstabletypeset[string type,
row predicate/.code={%
  \pgfplotstablegetelem{##1}{Type}\of{\data}
  \ifnum\pgfplotsretval=#1\relax
  \else\pgfplotstableuserowfalse\fi}
]{\data}
}
\end{document}

enter image description here