2015-03-24 2 views
-1

У меня есть две базы данных. Один сервер oracle и один sql-сервер. Для оракула.Результат не сортируется в соответствии с требованиями

WITH cycleset AS (
SELECT 
c.CYCLE_OID 
, UPPER(m.NAME) AS MACHINE_NAME, c.PAYLOAD 
FROM mshist.CYCLE c 
INNER JOIN msmodel.MACHINE m ON m.machine_oid = c.primarymachine 
WHERE (c.CYCLE_OID BETWEEN 1705497113111 AND 1705497596716)), 

eventset AS (
SELECT cs.* , 
    CAST((
     EXTRACT(SECOND FROM (a.END_TIME_UTC - a.START_TIME_UTC) DAY TO SECOND) + 
     EXTRACT(MINUTE FROM (a.END_TIME_UTC- a.START_TIME_UTC) DAY TO SECOND) * 60 + 
     EXTRACT(HOUR FROM (a.END_TIME_UTC - a.START_TIME_UTC) DAY TO SECOND) * 60 * 60 + 
     EXTRACT(DAY FROM (a.END_TIME_UTC - a.START_TIME_UTC) DAY TO SECOND) * 60 * 60 * 24 
    ) AS NUMBER(19,0)) AS DURATION 
FROM cycleset cs 
INNER JOIN mshist.CYCLEACTIVITYCOMPONENT a ON cs.CYCLE_OID = a.OID 
WHERE a.NAME NOT IN ('Machine.Delay') 
UNION ALL 
SELECT cs.* , 
    CAST((
     EXTRACT(SECOND FROM (a.END_TIME_UTC - a.START_TIME_UTC) DAY TO SECOND) + 
     EXTRACT(MINUTE FROM (a.END_TIME_UTC- a.START_TIME_UTC) DAY TO SECOND) * 60 + 
     EXTRACT(HOUR FROM (a.END_TIME_UTC - a.START_TIME_UTC) DAY TO SECOND) * 60 * 60 + 
     EXTRACT(DAY FROM (a.END_TIME_UTC - a.START_TIME_UTC) DAY TO SECOND) * 60 * 60 * 24 
    ) AS NUMBER(19,0)) AS DURATION 
FROM cycleset cs 
INNER JOIN mshist.CYCLEDELAY a ON cs.CYCLE_OID = a.OID) 

SELECT MACHINE_NAME, SUM(DURATION) AS EVENT_DURATION, SUM(PAYLOAD) AS  PAYLOAD 
FROM eventset 
GROUP BY 
MACHINE_NAME 

Для SQL.

SELECT 
    UPPER(MACH_NAME) AS MACHINE_NAME 
, CAST(SUM(f.SPLIT_DURATION) AS NUMERIC(19,0)) AS DURATION, 
SUM(f.EVENT_PAYLOAD) AS PAYLOAD 
FROM [mssol2015pdw].[dbo].[F_CYCLE_SHIFT_HR_EVENT_LU] f 
INNER JOIN [mssol2015pdw].[dbo].D_MACHINE m ON f.MACHINE_1_DIM_KEY =  m.DIMENSION_KEY 
INNER JOIN [mssol2015pdw].[dbo].D_CYCLE c ON f.[CYCLE_DIM_KEY] = c.DIMENSION_KEY 
WHERE m.DIMENSION_KEY > 0 
AND c.CYCLE_OID BETWEEN 1705497113111 AND 1705497596716 
GROUP BY UPPER(MACH_NAME) 

Данные должны получить отсортированы по имени машины, он становится выяснял в оракула, но не в SQL. Я пытаюсь сравнить данные в обоих столбцах одинаковые или нет. Также количество данных не одинаково для обоих запросов.

ответ

1

просто добавить Order by MACHINE_NAME до конца ваших обоих запросов, вы можете также добавить Order by 1 в конце запросов, поскольку MACHINE_NAME является первым полем

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