0
votes

Utilisation d'une variable dans un script de création de vue dans SQL Server

J'ai maintenant une vue intermédiaire dans SQL Server et une vue finale, comme suit:

Vue intermédiaire: P>

SELECT
    ....
    PenaltyBucket = COALESCE(CASE WHEN inv.ElapsedDays <= 30 THEN 'Not Late' END,
                             CASE WHEN inv.ElapsedDays > 30 THEN 'Late' END)
    ....
FROM 
    Inventory AS inv


0 commentaires

3 Réponses :


3
votes

Vous pouvez simplement répéter l'expression dans la clause CODE> SELECT CODE>:

SELECT
    t.*,
    CASE 
        WHEN ElapsedDays  <= 30 then 'Not Late'
        ELSE 'Late' 
    END AS PenaltyBucket 
FROM (
    SELECT
        ...,
        DATEDIFF(d, ri.DateReceived, GETDATE()) AS ElapsedDays,
        ...
    FROM RegionalInventory as ri
) t


0 commentaires

4
votes

En supposant que vous n'avez vraiment qu'une seule table (appelée régionalInventory , il s'agit d'un endroit pratique pour une jointure latérale: xxx

Remarque: < ul>

  • Il n'est pas nécessaire d'utiliser coalesce () avec deux case expressions. Un cas peut gérer plusieurs conditions.
  • épeler jour lorsque vous utilisez datrodiff () . C'est juste une bonne habitude (considérer: m minutes ou mois signifie?)

  • 2 commentaires

    En fait, j'ai plus de deux expressions de cas, mais ne figurant que deux ici pour la brièveté et je ne traite que d'une table. Je labourage de tester cela


    @coyotepoint. . . La clause Valeurs peut définir plusieurs colonnes: (valeurs (... ........) V (A, B, C) .



    1
    votes

    Vous pouvez définir la vue intérieure en tant que CTE, puis référez-la à nouveau.

    Créer la vue [Schema_Name. ] Nom de vue [(nom de colonne [ ... n])] Comme [;] :: =
    [Avec [ ... N]]
    Sélectionnez

    ci-dessous est le code de démonstration de votre référence. xxx

    Ce que vous pouvez faire est. Exemple de code pour votre référence. xxx


    0 commentaires