J'essaie de développer une requête T-SQL pour exclure toutes les lignes d'une autre table "B". Cette autre table "B" a 3 colonnes comprenant son PK pour un total de 136 lignes. Je veux donc sélectionner toutes les colonnes de la table "A" moins celles de la table "B". Comment puis-je faire cela? Je ne pense pas que cette requête est correcte parce que je reçois toujours une erreur d'enregistrement en double:Syntaxe pour SQL non dans la liste?
CREATE TABLE #B (STUDENTID VARCHAR(50), MEASUREDATE SMALLDATETIME, MEASUREID VARCHAR(50))
INSERT #B
SELECT studentid, measuredate, measureid
from [J5C_Measures_Sys]
GROUP BY studentid, measuredate, measureid
HAVING COUNT(*) > 1
insert into J5C_MasterMeasures (studentid, measuredate, measureid, rit)
select A.studentid, A.measuredate, B.measurename+' ' +B.LabelName, A.score_14
from [J5C_Measures_Sys] A
join [J5C_ListBoxMeasures_Sys] B on A.MeasureID = B.MeasureID
join sysobjects so on so.name = 'J5C_Measures_Sys' AND so.type = 'u'
join syscolumns sc on so.id = sc.id and sc.name = 'score_14'
join [J5C_MeasureNamesV2_Sys] v on v.Score_field_id = sc.name
where a.score_14 is not null AND B.MEASURENAME IS NOT NULL
and (A.studentid NOT IN (SELECT studentid from #B)
and a.measuredate NOT IN (SELECT measuredate from #B)
and a.measureid NOT IN (SELECT measureid from #B))
Merci, mais quelque chose à propos de cette requête n'est pas correct, car lorsque je compte les lignes de cette requête sans que ce soit NOT EXISTS par rapport à cela, je reçois le même nombre de lignes retournées. – salvationishere
Le problème pourrait être que l'un d'entre eux existe déjà dans votre table J5C_MasterMeasures ... vous êtes en train de déverser dans #b seulement ceux qui ont plus de 1 rang..what si utilisation Test n'est pas dans #B mais est dans [J5C_Measures_Sys] déjà? vous obtiendrez une violation PK – SQLMenace
ajouté une autre clause inexistante qui filtre ceux déjà dans la table J5C_MasterMeasures – SQLMenace