Приветствия,Вложенная инструкция SELECT в выражении CASE
Вот моя проблема.
Мне нужно получить данные из нескольких строк и вернуть их в виде одного результата в более крупном запросе.
У меня уже есть аналогичный вопрос. Return multiple values in one column within a main query, но я подозреваю, что мой недостаток знаний SQL вызвал слишком неопределенный вопрос, потому что ответы не сработали.
Я использую Microsoft SQL 2005.
Вот что у меня есть.
Несколько таблиц с CaseID как ПК, CaseID уникален.
Один стол (tblKIN) с CaseID и ItemNum (AutoInc) как комбинированный PK.
Поскольку каждый человек в базе данных, вероятно, имеет более одного родственника.
Если я запустил следующее, в окне SQL-запросов оно работает.
DECLARE @KINList varchar(1000)
SELECT @KINList = coalesce(@KINList + ', ','') + KINRel from tblKIN
WHERE CaseID = 'xxx' and Address = 'yyy'
ORDER BY KINRel
SELECT @KINList
Это вернет отношение всех людей, которые живут по тому же адресу. результаты выглядят так ...
Отец, племянница, сестра, сын
Теперь для меня проблема в том, как добавить это к основному запросу?
Укороченный к соответствующей информации главный запрос выглядит следующим образом.
SELECT DISTINCT
c.CaseID,
c.Name,
c.Address,
Relatives=CASE WHEN exists(select k.CaseID from tblKIN k where c.CaseID = k.CaseID)
THEN DECLARE @KINList varchar(1000)
SELECT @KINList = coalesce(@KINList + ', ','') + KINRel from tblKIN
WHERE CaseID = 'xxx' and Address = 'yyy'
ORDER BY KINRel
SELECT @KINList
ELSE ''
END
FROM tblCase c
ORDER BY c.CaseID
Ошибки, которые я получаю, являются.
Сервер: Msg 156, уровень 15, состояние 1, строка 13
Неверный синтаксис рядом с ключевым словом 'DECLARE'.
Сервер: Msg 156, Уровень 15, Состояние 1, Строка 18
Неверный синтаксис рядом с ключевым словом «ELSE».
Я попытался вложить скобки в круглые скобки из DECLARE в конец SELECT @KINList.
Я попытался добавить BEGIN и END в раздел THEN инструкции CASE.
Ничего не работало.
Данные исходной таблицы выглядят примерно так. (периоды добавлены для читаемости)
tblCase
CaseID Имя Адрес
10-001 Джиму ...... 100 Main St.
10-002 Том .... 150 Elm St.
10-003 Abe ..... 200 первый Санкт-
tblKIN
CaseID ItemNum Имя связь Адрес
10-001 00001 Steve ... Сын ........ 100 Main St.
10-002 00002 Джеймс .. Отец .... 150 Elm St.
10-002 00003 Betty .... Племянница ...... 150 Elm St.
10-002 00004 Greta ... Сестра ..... 150 Elm St.
10-002 00005 10-002 00005 Davey..Son ........ 150 Elm St.
10-003 00006 Edgar ... Brother ... 200 1st St.
Если я запустил запрос для CaseID = 10-002, ему необходимо вернуть следующее.
CaseID Название Адрес ....... Родственники
10-002 Том ... 150 Elm St. ..Father, племянница, сестра, сын
Я уверен, что это, вероятно, просто исправить, но Я просто не знаю, как это сделать.
Спасибо за ваше время, и я прошу прощения за вопрос, но я хотел быть ясным.
Спасибо !!!
работал отлично !!!!!! Благодаря !!!!! – Scottster