J'essaye d'écrire une procédure stockée qui retournera deux valeurs calculées pour chaque enregistrement selon les règles ci-dessous, mais je n'ai pas compris comment structurer le SQL pour faire ça arrive. J'utilise SQL Server 2008.Trouver le T-SQL pour retourner ces valeurs
D'abord, les tables pertinentes et les champs qui importent au problème.
ProductionRuns
RunID (key, and RunID is given to the stored proc as its parameter)
ContainerName
ProductName
TemplateID
TemplateMeasurements
MeasurementTypeID
TemplateID
SimpleBounds
MeasurementTypeID
TemplateID
UpperBound
LowerBound
ContainerBounds
MeasurementTypeID
TemplateID
UpperBound
LowerBound
ContainerName
ProductBounds
MeasurementTypeID
TemplateID
UpperBound
LowerBound
ProductName
Et ce que je suis en train de revenir. Je souhaite renvoyer une limite supérieure et une limite inférieure calculées pour chaque enregistrement TemplateMeasurements dont l'ID de modèle correspond à l'enregistrement ProductionRuns ayant l'ID d'exécution fourni.
Les limites supérieure et inférieure calculées obtiennent fondamentalement la limite la plus étroite qui peut être obtenue en raison des limites simples, de conteneur et de produit, si elles se qualifient.
Si un enregistrement SimpleBounds existe avec le MeasurementTypeID et le TemplateID corrects, alors cela devient l'une des limites qualifiantes pour un MeasurementTypeID particulier et un enregistrement de TemplateMeasurements.
Pour qu'un enregistrement ContainerBound puisse être qualifié, le paramètre TemplateID et MeasurementTypeID doivent correspondre, mais le nom du conteneur doit également correspondre à la valeur de ContainerName dans l'enregistrement ProductionRuns. Aussi pour ProductBounds, la même chose est vraie, mais pour ProductName.
Pour un MeasurementTypeID particulier, prenez toutes les limites qualifiantes et trouvez le moins de limite supérieure, et ce sera la limite supérieure calculée qui doit être retournée. Trouver la plus grande limite inférieure des qualificatifs et ce sera la limite inférieure retournée.
Je ne sais pas comment mettre en place SQL pour faire cela.
En outre, si aucune des trois tables liées ne se qualifie pour un MeasurementTypeID particulier, alors null peut être retourné. Ma pensée serait une sorte de jointure externe gauche, mais je ne suis pas sûr de savoir comment l'étendre à trois tables qui pourraient toutes avoir une valeur nulle dans les résultats.
Merci pour l'aide.
Merci pour le code. Je vais y jeter un coup d'oeil. ProductBounds doit utiliser PB.ProductName = PR.ProductName mais à part ça, il a l'air génial! –
Ahh, couper et coller erreur ... Je vais le corriger maintenant –