как отфильтровать идентификатор столбца таблицы в соответствующее имя напрямую с помощью SQL-запроса - PullRequest
0 голосов
/ 19 декабря 2011

У меня есть эта таблица, где столбцы соответствуют именам:

т.е. 11 = первый, 12 = второй, 13 = третий ..

COLUMNID(string)  starttime(string) endtime(string) 

11                 20111203123132    20101203143239
11                 20101203143156     20101203143322
11                     ...               ...
12
12
13
14
16
17
18
18

Мне нужен запрос, чтобы дать мнеимена вместо идентификатора

COLUMNAME(string)  starttime(string) endtime(string) 
FIRST                 20111203123132    20101203143239
FIRST                 20101203143156     20101203143322
FIRST                    ...               ...
FIRST
FIRST
SECOND
SECOND
THIRD
...

РЕШЕНИЕ:

ВЫБЕРИТЕ ID, USERID, (СЛУЧАЙ, КОГДА SUBSTR (USERID, 1,4) КАК 'CC0%' THEN 'ADMIN' КОГДА SUBSTR (USERID), 1,4) LIKE 'CC1%' THEN 'THEO' КОГДА SUBSTR (USERID, 1,4) LIKE 'CC12%' THEN 'PAT' WHEN SUBSTR (USERID, 1,4) LIKE 'CC13%' THEN 'DOUG'КОГДА SUBSTR (USERID, 1,4) НРАВИТСЯ 'C22%' THEN 'PHIL' КОГДА SUBSTR (USERID, 1,4) НРАВИТСЯ 'K15%' THEN 'SONIA' КОГДА SUBSTR (USERID, 1,4) НРАВИТСЯ 'k16%'THEN 'JEAN' Когда SUBSTR (USERID, 1,4) LIKE 'P58%' THEN 'FAB' WHEN SUBSTR (USERID, 1,4) LIKE 'P9%' THEN 'LOG' ELSE 'N / A' END) ИМЯ ПОЛЬЗОВАТЕЛЯ ИЗLOG_HISTORY

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Это зависит от типа базы данных, на которую вы нацелены. Если вы ориентируетесь на SQL Server, я бы предложил изучить что-то вроде этого

SELECT Name = 
   CASE COLUMNID
      WHEN '11' THEN First 
      WHEN '12' THEN Second
   END,
   starttime, endtime
FROM yourtable

Возможно, вы захотите взглянуть на дизайн вашей базы данных. Я не уверен, что то, что у вас есть в данный момент, является лучшим для достижения результата, которого вы, похоже, хотите. Есть ли причина, по которой столбцы starttime и endtime являются строками вместо datetime?

Редактировать: модифицированный запрос, чтобы соответствовать обновлению вопроса

0 голосов
/ 19 декабря 2011

SQL не имеет функции для преобразования чисел в порядковые.

Проверьте this для примера того, как написать свой собственный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...