Неожиданный результат SQL ORDER BY - PullRequest
0 голосов
/ 08 марта 2019

У меня есть сценарий, который я не знаю, как получить правильные результаты из-за недостатка знаний SQL и мне нужна помощь.

Я понимаю, что делает команда ORDER BY;Я просто не знаю, как манипулировать данными, возвращаемыми из запроса, чтобы сохранить данные в том порядке, в котором они мне нужны.

Ниже приведена строка SQL:

SELECT cfcif# AS "CIF Number",cfna1 AS "Customer Name" FROM cncttp08.jhadat842.cfmast cfmast WHERE cfcif#='T000714'
UNION
SELECT cfcif# AS "CIF Number",cfna1 AS "Customer Name" FROM cncttp08.jhadat842.cfmast cfmast WHERE cfcif#='T000713'
UNION
SELECT cfcif# AS "CIF Number",cfna1 AS "Customer Name" FROM cncttp08.jhadat842.cfmast cfmast WHERE cfcif#='T000715'
ORDER BY "CIF Number"

Как выЯ вижу, что «CIF Numbers» вышли из строя, как и должно быть, и с помощью ORDER BY данные упорядочиваются по CIF #, но мне нужны данные, чтобы они действительно были не в порядке.

Ниже показано, как текущая строка возвращает данные:

T000713 | ROGER RABBITT                          
T000714 | JESSICA RABBIT                         
T000715 | JAMES KIRK

Ниже показано, как мне нужны возвращаемые данные:

T000714 | JESSICA RABBITT
T000713 | ROGER RABBITT
T000715 | JAMES KIRK

Когда я удаляю ORDER BY, возвращается следующий результат::

T000714 | JAMES KIRK
T000713 | JESSICA RABBITT
T000715 | ROGER RABBITT

Ответы [ 2 ]

3 голосов
/ 08 марта 2019

Я не понимаю, почему вы используете UNION.Вы можете сделать это так:

SELECT 
  cfcif# AS "CIF Number",
  cfna1 AS "Customer Name" 
  FROM cncttp08.jhadat842.cfmast cfmast 
  WHERE cfcif# IN ('T000714', 'T000713', 'T000715')
ORDER BY
  CASE cfcif# 
    WHEN 'T000714' THEN 1
    WHEN 'T000713' THEN 2
    WHEN 'T000715' THEN 3
  END
0 голосов
/ 08 марта 2019

Simple!

Удалить кавычки из заказа по предложению.Он должен работать.Ваш код должен быть, как показано ниже.

`SELECT cfcif# AS "CIF Number",cfna1 AS "Customer Name" FROM 
 cncttp08.jhadat842.cfmast cfmast WHERE cfcif#='T000714'
 UNION
 SELECT cfcif# AS "CIF Number",cfna1 AS "Customer Name" FROM 
 cncttp08.jhadat842.cfmast cfmast WHERE cfcif#='T000713'
 UNION
 SELECT cfcif# AS "CIF Number",cfna1 AS "Customer Name" FROM 
 cncttp08.jhadat842.cfmast cfmast WHERE cfcif#='T000715'
 ORDER BY CIF Number`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...