2015-02-19 3 views
0

Я должен выполнить этот запрос на мой SQL Server 2008.SQL Server 2008 запрос не выполняется должным образом

мне нужно соединить 2 таблицы (Gasper_object и Ticket) и получить результаты, где Gasper_object.id также показано на рисунке.

SELECT 
    TICKET.ACTION_CODE_KEY, 
    TICKET.OBJECT_KEY, 
    GASPER_OBJECT.ID, 
    CASE 
     WHEN ACTION_CODE_KEY IN (4,8) THEN 'OUT OF SERVICE' 
     WHEN ACTION_CODE_KEY IS NULL THEN 'IN SERVICE' 
     ELSE 'FAULTY SERVICE' 
    END "STATUS" 
FROM 
    TICKET 
INNER JOIN 
    GASPER_OBJECT ON ticket.OBJECT_KEY = GASPER_OBJECT.OBJECT_KEY 
GROUP BY 
    ticket.object_key, GASPER_OBJECT.ID; 

Что мне делать?

ОБНОВЛЕНИЕ

Это то, что я получил в качестве задачи, чтобы завершить

  • ЕСЛИ ACTION_CODE 4 или 8, COLOUMN имя должно быть из СЛУЖБЫ
    • противном случае он должен НЕБЕСНОЕ ОБСЛУЖИВАНИЕ
    • ЕСЛИ У ОБЪЕКТА НИКАКИХ БИЛЕТОВ ТОЛЬКО, ЧТО ЭТО В СЕРВИСЕ
    • GASPER_OBJECT.ID, статус должен быть выходной сигнал КОЛОННЫ ПОСЛЕ запрашивая
    • Если объект имеет больше чем один билет, который относится к КРИТЕРИИ, ИСПОЛЬЗОВАТЬ DISTINCT
+2

В чем проблема? –

+0

Ваш запрос не является синтаксически правильным. Измените свой вопрос с помощью выборочных данных и желаемых результатов. –

+0

@GordonLinoff Почему я не вижу, что случилось с запросом ..? Не могли бы вы указать? –

ответ

0

Просто добавьте остальные столбцы в группу.

SELECT 
    TICKET.ACTION_CODE_KEY, 
    TICKET.OBJECT_KEY, 
    GASPER_OBJECT.ID, 
    CASE 
     WHEN ACTION_CODE_KEY IN (4,8) THEN 'OUT OF SERVICE' 
     WHEN ACTION_CODE_KEY IS NULL THEN 'IN SERVICE' 
     ELSE 'FAULTY SERVICE' 
    END "STATUS" 
FROM 
    TICKET 
INNER JOIN 
    GASPER_OBJECT ON ticket.OBJECT_KEY = GASPER_OBJECT.OBJECT_KEY 
GROUP BY 
    TICKET.ACTION_CODE_KEY, ticket.object_key, GASPER_OBJECT.ID; 
+0

Еще раз спасибо :) было бы полезно, если вы можете сказать, как использовать DISTINCT для правильного результата –

+0

Что, по-видимому, проблема? Данные повторяются? –

+0

gasper_object.id и ticket.object_key повторяются сэр –

0

В запросе агрегации, все столбцы не group by должны быть аргументами для функций агрегации. Ниже приведен пример запроса, который должен, по крайней мере, запустить:

SELECT t.object_key, o.ID, 
     (CASE WHEN MAX(ACTION_CODE_KEY) IN (4, 8) THEN 'OUT OF SERVICE' 
      WHEN MAX(ACTION_CODE_KEY) IS NULL THEN 'IN SERVICE' 
      ELSE 'FAULTY SERVICE' 
     END) as STATUS 
FROM TICKET t inner join 
    GASPER_OBJECT o 
    on t.OBJECT_KEY = o.OBJECT_KEY 
group by t.object_key, o.ID; 

Ваш вопрос не объясняет, что вы хотите сделать, так это может или не может привести к результатам, которые вы ожидаете.

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