SELECT TOP 10000
            T.* 
                       
            ,i.DescrizioneTipologia
            ,f.DescrizioneStatoProdotto
            ,n.DescrizioneFormato
            ,y.DescrizioneCollana
            ,z.AutoriCompleti
            ,i2.DescrArgomento
            ,z3.CasaEditrice ,q.QtaDisponibile  FROM T_WEB_Articoli T
                JOIN(
                    SELECT IdArticolo, MAX(DataOra) AS data 
            FROM T_WEB_Articoli 
            GROUP BY IdArticolo
                ) b ON T.IdArticolo = b.IdArticolo AND T.DataOra = b.data  LEFT JOIN(
                    SELECT e.IdStatoProdotto, e.Descrizione as DescrizioneStatoProdotto
            FROM T_WEB_StatiProdotto e
            JOIN(
                        SELECT IdStatoProdotto, MAX(DataOra) as data1
                FROM T_WEB_StatiProdotto
                GROUP BY IdStatoProdotto
                    ) c ON e.IdStatoProdotto = c.IdStatoProdotto AND e.DataOra = c.data1
                ) f ON T.IdStatoProdotto = f.IdStatoProdotto
        LEFT JOIN(
                        SELECT g.IdTipologia, g.Descrizione as DescrizioneTipologia
            FROM T_WEB_Tipologie g
            JOIN(
                            SELECT IdTipologia, MAX(DataOra) as data1
                FROM T_WEB_Tipologie
                GROUP BY IdTipologia
                        ) h ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1
                    ) i ON T.IdTipologia = i.IdTipologia
        LEFT JOIN(
                        SELECT l.IdTipoFormato, l.Descrizione as DescrizioneFormato
            FROM T_WEB_TipiFormato l
            JOIN(
                            SELECT IdTipoFormato, MAX(DataOra) as data1
                FROM T_WEB_TipiFormato
                GROUP BY IdTipoFormato
                        ) m ON l.IdTipoFormato = m.IdTipoFormato AND l.DataOra = m.data1
                    ) n ON T.IdTipoFormato = n.IdTipoFormato
        LEFT JOIN(
                        SELECT v.IdCollana, v.Descrizione as DescrizioneCollana
            FROM T_WEB_Collane v
            INNER JOIN(
                            SELECT IdCollana, MAX(ID) as MaxID
                FROM T_WEB_Collane
                GROUP BY IdCollana
                        ) x ON v.IdCollana = x.IdCollana AND v.ID = x.MaxID
                    ) y ON T.IdCollana = y.IdCollana        
        LEFT JOIN(
                        SELECT g2.IdArgomento, g2.Descrizione as DescrArgomento
            FROM T_WEB_Argomenti g2
            INNER JOIN(
                            SELECT IdArgomento, MAX(DataOra) as data12
                FROM T_WEB_Argomenti
                GROUP BY IdArgomento
                        ) h ON g2.IdArgomento = h.IdArgomento AND g2.DataOra = h.data12
                    ) i2 ON T.ListaArgomenti = i2.IdArgomento
        LEFT JOIN(
                        SELECT 
                T1.IdArticolo,
                        STUFF((
                            SELECT ',' + ISNULL(A2.AutoreCompleto, '')
                    FROM(
                                SELECT CAST('<root><x>' + REPLACE(T1.ListaAutori, ',', '</x><x>') + '</x></root>' AS XML) AS DataXML
                            ) X
                    CROSS APPLY X.DataXML.nodes('/root/x') AS A(x)
                    CROSS APPLY(
                                SELECT TRY_CAST(LTRIM(RTRIM(A.x.value('.', 'VARCHAR(100)'))) AS INT) AS AutoreID
                            ) CA
                    JOIN(
                                SELECT a.IdAutore, CONCAT(a.Nome, ' ', a.Cognome) AS AutoreCompleto
                        FROM T_WEB_Autori a
                        JOIN(
                                    SELECT IdAutore, MAX(DataOra) AS maxData
                            FROM T_WEB_Autori
                            GROUP BY IdAutore
                                ) aa ON a.IdAutore = aa.IdAutore AND a.DataOra = aa.maxData
                            ) A2 ON CA.AutoreID = A2.IdAutore
                    FOR XML PATH(''), TYPE
                        ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS AutoriCompleti
            FROM T_WEB_Articoli T1
            GROUP BY T1.IdArticolo, T1.ListaAutori
        ) z ON T.IdArticolo = z.IdArticolo     
        LEFT JOIN(
                            SELECT a3.IdMarchioEditoriale, a3.Descrizione as CasaEditrice
            FROM T_WEB_MarchiEditoriali a3
            JOIN(
                                SELECT IdMarchioEditoriale, MAX(DataOra) as maxData
                 FROM T_WEB_MarchiEditoriali
                 GROUP BY IdMarchioEditoriale
                            ) aa3 ON a3.IdMarchioEditoriale = aa3.IdMarchioEditoriale AND a3.DataOra = aa3.maxData
                        ) z3 ON T.IdMarchioEditoriale = z3.IdMarchioEditoriale   LEFT JOIN(
                                    SELECT o.Codice, o.QtaDisponibile
                            FROM T_WEB_Disponibile o
                            JOIN(
                                        SELECT Codice, MAX(DataOra) as data1
                                FROM T_WEB_Disponibile
                                GROUP BY Codice
                                    ) p ON o.Codice = p.Codice AND o.DataOra = p.data1
                                ) q ON T.IdArticolo = q.Codice WHERE 
                        (DescrizioneStatoProdotto = 'In commercio' OR
                        DescrizioneStatoProdotto = 'Prossima uscita/pubblicazione' OR                        
                        DescrizioneStatoProdotto = 'Prossima uscita' OR
                        DescrizioneStatoProdotto = 'In prevendita' OR
                        DescrizioneStatoProdotto = '2023 in commercio')
                        AND
                        (DescrizioneTipologia = 'Libri' OR
                        DescrizioneTipologia = 'Cartolibro' OR
                        DescrizioneTipologia = 'Carte')
                        AND
                        (Ean13 NOT LIKE 'USATO%')