0
votes

SQL Pivot Convertir 2 colonnes en rangées

J'ai une table de stocks dans MSSQL 2017. Il dispose de colonnes: xxx

maintenant, je dois afficher cette information dans 2 lignes: xxx

est-il possible de faire du pivot ()? Suis-je sur un chemin correct? P.S J'utilise l'entité Framework Core.


0 commentaires

3 Réponses :


2
votes

Vous pouvez facilement faire cela en utilisant appliquer : xxx

Je pense que vous pouvez faire cela en utilisant impublard , mais c'est une syntaxe superflue . appliquer implémente les jointures latérales, qui sont très puissantes. Ce n'est qu'un exemple de la façon dont ils peuvent être utilisés.


1 commentaires

Utilisez une procédure stockée pour renvoyer les résultats dont vous avez besoin.



1
votes

Une approche simple à comprendre serait l'union:

context.StockLines.Select(s => new[] { new {
    s.Product,
    Quantity = s.QuantityInStock - s.ReservedQuantity,
    Reserved = false
  },
  new {
    s.Product,
    Quantity = s.ReservedQuantity,
    Reserved = true
  }
}).SelectMany().ToList()


1 commentaires

mon intellisense ne trouve pas .Selectmany (). J'ai fait -> Selectmany (x => x)



0
votes

Vous pouvez utiliser UnPivot

 SELECT Product,
        Quantity,
        Reserved
 FROM   (
            SELECT product,
                   QuantityInStock   AS [false],
                   ReservedQuantity  AS [true]
            FROM   pro
        ) AS tt
        UNPIVOT(Quantity FOR Reserved IN ([false], [true])) upvt


0 commentaires