Привет,
Вот моя проблема.
Мне нужно получить данные из нескольких строк и вернуть их как один результат в большем запросе.
Я уже разместил похожеевопрос здесь. Возврат нескольких значений в одном столбце в основном запросе , но я подозреваю, что мое отсутствие знаний SQL сделало вопрос слишком расплывчатым, поскольку ответы не работали.
Я использую Microsoft SQL 2005.
Здесьэто то, что у меня есть.
Несколько таблиц с CaseID в качестве PK, 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 Вязов ул.
10-003 Абэ ..... 200 1-й ул.
tblKIN
CaseID ItemNum Name Адрес для связи
10-001 00001 Стив...Son ........ 100 Main St.
10-002 00002 Джеймс .. Отец .... 150 Elm St.
10-002 00003 Бетти .... Племянница ...... 150 Elm St.
10-002 00004 Грета ... Сестра ..... 150 Elm St.
10-002 00005 Davey..Son ........ 150 Elm St.
10-003 00006 Эдгар ... Брат ... 200 1-й ул.
Если я запускаю запрос для CaseID = 10-002, он должен вернуть следующее.
Имя CaseIDАдрес ....... Родственники
10-002 Том ... ул. Вязов 150 .. Отец, племянница, сестра, сын
Я уверен, что это, вероятно, простое исправление, но япросто не знаю, как это сделать.
Спасибо за ваше время, и я прошу прощения за длину вопроса, но я хотел быть ясным.
Спасибо !!!