J'ai 2 tables:
la première table est [Table_Time]: P>
Product Store Month Number Week Number ------------ ----------- ------------ ----------- P1 ST1 1 01 P1 ST1 1 02 P1 ST1 1 03 P1 ST1 1 04 P1 ST1 2 05 P1 ST1 2 06 P1 ST1 2 07 P1 ST1 2 08 P1 ST1 3 09 P1 ST1 3 10 P1 ST1 3 11 P1 ST1 3 12
3 Réponses :
Vous pouvez faire un insert code> avec un "antijoindre", comme dans:
Considérez que j'ai x produits et x magasins sur la table [Ventes]
Non, c'est une syntaxe invalide pour SQL Server. Pour plusieurs colonnes, nous devons utiliser Exist code>.
@Guidog j'ai oublié que SQL Server ne prend pas en charge les tuples. Changé en un antijoindre typique maintenant.
Voici une façon de le faire, vous devez créer un produit cartésien entre vos produits et vos dates. Utilisation de sauf code> Vous ne pouvez apporter que les valeurs nécessaires pour que vous puissiez les insérer dans votre table de vente. WITH AllProducts AS( --This can be avoided if you already have a list of them outside of Sales
SELECT DISTINCT Product, Store
FROM Sales
)
SELECT p.Product,
p.Store,
t.MonthNumber,
t.WeekNumber
FROM AllProducts p
CROSS JOIN Table_Time t
EXCEPT
SELECT s.Product,
s.Store,
s.MonthNumber,
s.WeekNumber
FROM Sales s;
En supposant que vous avez une table de stockage et de produit, il suffit d'utiliser comme code> joindre rejoindre code>: Si vous souhaitez que vous puissiez ajouter un à gauche Joindre code> à votre Ventes CODE> Table: P> SELECT TT.MonthNumber,
TT.MonthNumber,
P.ProductID,
S.StoreID,
COUNT(SS.ID)
FROM Table_time TT
CROSS JOIN Product P
CROSS JOIN Store S
LEFT JOIN Sales SS ON TT.MonthNumber = SS.MonthNumber
AND TT.WeekNumber = SS.WeekNumber
AND P.ProductID = SS.ProductID
AND S.StoreID = SS.StoreID;
et où obtenez-vous les valeurs pour
produit code> etStore code> lorsque vous ajoutez les lignes manquantes dansVentes code>?Pourquoi dupliquer la date ici? Y a-t-il plus de colonnes dans votre table
ventes code> nous ne savons pas? Si cela est simplement pour une requête, avez-vous besoin de stocker les semaines de valeur zéro, lorsque vous pourriez contracter les données avec `croisez-vous» entre votre table de temps et des tables de produits / magasin?J'ai des ventes pour ces semaines, mais j'ai besoin de la valeur 0 pour les disparus ...
D'où vient cette valeur? Je ne peux pas le voir dans votre résultat attendu. Je pense que vous devez expliquer mieux votre problème et ce dont vous avez besoin