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
3 Réponses :
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
En supposant que vous n'avez vraiment qu'une seule table (appelée Remarque: P> < ul>
régionalInventory code>, il s'agit d'un endroit pratique pour une jointure latérale: coalesce () code> avec deux case code> expressions. Un cas code> code> peut gérer plusieurs conditions. LI>
jour code> lorsque vous utilisez datrodiff () code>. C'est juste une bonne habitude (considérer: m code> minutes ou mois signifie?) Li>
ul> p>
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) CODE>.
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électionnezP> blockQuote> ci-dessous est le code de démonstration de votre référence. p>
xxx pré> Ce que vous pouvez faire est. Exemple de code pour votre référence. P>
xxx pré> p>