Я пытаюсь это в Microsoft SQL Server:случае, когда запрос Exists не работает
SELECT DISTINCT
a.InteractionID,
a.Program,
a.[Client Name],
CASE
WHEN EXISTS (
SELECT *
FROM [Interaction Behaviors]
JOIN Behaviors
ON [Interaction Behaviors].BehaviorID = Behaviors.BehaviorID
JOIN Interactions
ON Interactions.InteractionID = [Interaction Behaviors].InteractionID
WHERE
[Interaction Behaviors].InteractionID = Interactions.InteractionID
AND Behaviors.BehaviorID = 1
)
THEN 1
ELSE 0
END AS 'Alcohol/Drug Use By Client',
CASE
WHEN EXISTS (
SELECT *
FROM [Interaction Behaviors] JOIN
Behaviors
ON [Interaction Behaviors].BehaviorID = Behaviors.BehaviorID
JOIN Interactions
ON Interactions.InteractionID = [Interaction Behaviors].InteractionID
WHERE
[Interaction Behaviors].InteractionID = Interactions.InteractionID
AND Behaviors.BehaviorID = 5
)
THEN Behavior
ELSE ''
END AS 'Allegation--Text',
c.InterventionID,
d.Intervention ASIntervention_Name
FROM (
(
[Interactions Query] AS a
INNER JOIN [Interaction Interventions] AS c
ON a.InteractionID = c.InteractionID
)
LEFT JOIN Interventions AS d
ON c.InterventionID = d.InterventionID
Первый Case
оператор выполняет отлично.
Проблема заключается во втором описании Cas
e, где я не просто хочу 1 или 0, а фактический текст.
Для этого один, я получаю сообщение об ошибке:
Msg 207, уровень 16, состояние 1, строка 19 недопустимое имя столбца 'Поведение'
Behavior
столбец в [Interaction Behaviors]
Таблица.
Я понимаю, что мне нужно явно присоединиться к таблице [Interaction Behaviors]
в инструкции from. Тем не менее, это дает мне нечетные дублированные строки, поэтому мне нужно позаботиться об этом в Case
.
Спасибо за внимание!
Ваши круглые скобки являются несбалансированными, не говоря уже о том, что запрос не может быть прочитан прямо сейчас. –
Вы не можете получить доступ к столбцу 'Behavior' из подзапроса, который содержит этот столбец. он находится в '(SELECT * FROM [Interaction Behaviors] JOIN Behaviors ON [Interaction Behaviors] .BehaviorID = Behaviors.BehaviorID JOIN Взаимодействия на Interactions.InteractionID = [Interaction Behaviors] .InteractionID WHERE [Interaction Behaviors] .InteractionID = Interactions.InteractionID AND Behaviors.BehaviorID = 5) ' –
Возможно, вы не знаете о своих подзапросах, не связанных с вашими основными записями. То есть в ваших подзапросах вы не ссылаетесь на таблицу a, c или d. Либо существует запись Behaviors с BehaviorID = 1, то вы показываете 1 для всех выбранных записей, иначе это не так, и вы показываете 0 для всех строк. Поэтому, возможно, вы должны сообщить нам, что запрос * предполагается * делать. –