2016-09-20 3 views
1

У меня есть таблица с длинным списком идентификаторов и различными другими данными. У меня есть столбец в таблице для другого идентификатора, что мне нужно заполнить Вот пример того, что он выглядит следующим образом:.Выберите несколько экземпляров записи

ID1 | ID2 | Date 
5 |  | ... 
6 |  | ... 
6 |  | ... 
7 |  | ... 
9 |  | ... 
9 |  | ... 
9 |  | ... 
10 |  | ... 
10 |  | ... 
11 |  | ... 

Мне нужно получить ID2 из таблицы в базе данных. Я могу легко скопировать столбец ID1 и использовать текстовый редактор для замены \r\n',', а затем запустить SELECT ID1, ID2 FROM MyTable WHERE ID1 IN ('5,6,6,7,9,9,9,10,10,11'). Проблема заключается в том, что в результатах отображаются только уникальные значения для ID1, что означает, что мне нужно будет пройти через электронную таблицу и вставить значения вручную. Вместо того, что я хочу, это следующие результаты:

ID1 | ID2 | Date 
5 | a | ... 
6 | b | ... 
6 | b | ... 
7 | c | ... 
9 | e | ... 
9 | e | ... 
9 | e | ... 
10 | f | ... 
10 | f | ... 
11 | g | ... 

Таким образом, я могу скопировать и вставить в таблицу и все строки будут выровнены.

Я пытался сделать что-то вроде этого:

SELECT ID1, ID2 FROM MyTable a, ('5','6','6',...) b 

Но это не похоже на работу. Я понятия не имею, что еще попробовать.

+0

У вас есть еще один столбец, который можно использовать, чтобы однозначно идентифицировать каждую строку? – JohnHC

+0

К сожалению, нет. –

+0

Для столбца ID2, когда вы его просматриваете, вы просматриваете его на основе значения, которое находится в столбце ID1? – Jay

ответ

0

Попытка ответить на этот вопрос основывается на том, что я понимаю из вашего вопроса. Я также принимаю SQL Server здесь.

Вы должны загрузить существующую таблицу в таблицу базы данных, давайте позвоним этой таблице OriginalTable. Теперь у вас есть исходная таблица, которая выглядит следующим образом:

ID1 | ID2 | Date 
5 |  | ... 
6 |  | ... 
6 |  | ... 
7 |  | ... 
9 |  | ... 
9 |  | ... 
9 |  | ... 
10 |  | ... 
10 |  | ... 
11 |  | ... 

Далее, я предполагаю, что у вас есть таблица, которая имеет соответствующие ID2s для каждого ID1. Предположим, что таблица называется IDTable. Может выглядеть примерно так:

ID1 | ID2 
5 | a 
6 | b 
7 | c 
9 | e  
10 | f   
11 | g  

Наконец, выполнения запроса, как это:

SELECT Orig.ID1, (SELECT IDT.ID2 FROM IDTable IDT WHERE IDT.ID1 = Orig.ID1) AS ID2, Orig.Date 
FROM OriginalTable Orig 
+0

К сожалению, создание таблицы не является вариантом. Если вы не говорите о временной таблице, в этом случае я не уверен, что это опция в [tag: intersystems-cache]. –

Смежные вопросы