Ho modificato la stored procedure seguendo le tue indicazioni ed annidiando 2 CASE. L'indentazione però non mi convince anche se all'interno di SSMA non compaiono errori. Tuttavia, pur passando i corretti parametri strSenso ('ASC' o 'DESC') e strParametro ('0', '1', '2', ecc) il risultato non cambia, ossia l'output è sempre il medesimo. Il perchè non lo so proprio.
Se esistesse (non lo so) la possibilità di eseguire la stored procedure passo passo riuscirei a capire dove fallisce.
codice:
USE [Medart_SA2]
GO
/****** Object:  StoredProcedure [dbo].[strOrganizzaGiornata]    Script Date: 11/07/2020 16:38:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--- 

ALTER PROCEDURE [dbo].[strOrganizzaGiornata]  
    @strDataX varchar(10),
    @strStato varchar(2),
    @strSenso varchar(4),
    @strParametro varchar(1)
AS

BEGIN
    SET NOCOUNT ON
    SELECT TabDateDip.RagioneSociale,TabDateDip.CognomeNomeDipendente,TabDateDip.DataSca,TabDateDip.TipoPrestazione,TabDateDip.Codice,TabDateDip.Luogo,TabDateDip.NomeMedico,
    TabDateDip.Stato,TabDateDip.ID,TabDateDip.IDAzienda,TabDateDip.IDDipendente,TabDateDip.IDMedico,TabDateDip.IDLuogoVisita,TabDateDip.DataPre,TabDateDip.Ora,TabDateDip.DataRegistrazione,
    TabDateDip.InServizio,TabDateDip.DataEff,TabAziende.DataSospesa FROM TabDateDip INNER JOIN TabAziende ON TabDateDip.IDAzienda = TabAziende.ID  
    WHERE TabDateDip.DataSca<@strDataX 
    AND TabDateDip.InServizio='S' 
    AND TabDateDip.Stato=@strStato 
    ORDER BY 
    CASE
       WHEN @strSenso='ASC' THEN
            CASE 
                WHEN @strParametro='0' THEN 'TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='1' THEN 'TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='2' THEN 'TabDateDip.DataSca ASC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='3' THEN 'TabDateDip.TipoPrestazione ASC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='4' THEN 'TabDateDip.Codice ASC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC'
                WHEN @strParametro='5' THEN 'TabDateDip.Luogo ASC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='6' THEN 'TabDateDip.NomeMedico ASC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='7' THEN 'TabDateDip.Stato ASC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
            END
       WHEN @strSenso='DESC' THEN
            CASE 
                WHEN @strParametro='0' THEN 'TabDateDip.RagioneSociale DESC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                  WHEN @strParametro='1' THEN 'TabDateDip.CognomeNomeDipendente DESC,TabDateDip.Codice ASC'
                WHEN @strParametro='2' THEN 'TabDateDip.DataSca DESC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='3' THEN 'TabDateDip.TipoPrestazione DESC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='4' THEN 'TabDateDip.Codice DESC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC'
                WHEN @strParametro='5' THEN 'TabDateDip.Luogo DESC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='6' THEN 'TabDateDip.NomeMedico DESC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
                WHEN @strParametro='7' THEN 'TabDateDip.Stato DESC,TabDateDip.RagioneSociale ASC,TabDateDip.CognomeNomeDipendente ASC,TabDateDip.Codice ASC'
            END
      END

END