#sql-server #union #temp
#sql-server #объединение #temp
Вопрос:
Я написал запрос T-SQL для сбора некоторых данных из многих таблиц и разделения строк на три с помощью запросов объединения выбора. При выполнении запросов возникают ошибки. Я прикрепил запросы, пожалуйста, помогите мне исправить ошибки.
SELECT *
INTO #tmpFerdeen
FROM
(SELECT
(CASE WHEN sc <> '0000' THEN sln END) AS t,
(CASE WHEN sc <> '0000' THEN crid END) AS crrid,
CASE Header
WHEN 'H' THEN 1
WHEN 'S' THEN 2
WHEN 'T' THEN 3
ELSE 0
END O,
CASE
WHEN sc <> '0000' THEN Header
END,
CASE
WHEN sc <> '0000' THEN Header '|' st '|' convert(varchar,pid) '|' convert(varchar, cid) '|' convert(varchar,cenddate )
END AS RestOfData
FROM
#tempsddd
UNION ALL
SELECT
sln t, crid crrid,
CASE Details
WHEN 'H' THEN 1
WHEN 'S' THEN 2
WHEN 'T' THEN 3
ELSE 0
END,
Details,
Details '|' ISNULL(CONVERT(varchar, sln), '') '|' '|' '|' '|'
ISNULL(CONVERT(varchar, ah), '') '|'
ISNULL(sfne, '') '|'
ISNULL(smne, '') '|'
ISNULL(slne, '')
FROM
#tempsddd
UNION ALL
SELECT
(CASE WHEN sc <> '0000' THEN sln END) AS t,
(CASE WHEN sc <> '0000' THEN crid END) AS crrid,
CASE Footer
WHEN 'H' THEN 1
WHEN 'S' THEN 2
WHEN 'T' THEN 3
ELSE 0
END,
CASE WHEN sc <> '0000' THEN Footer END,
CASE WHEN sc <> '0000' THEN Footer '|' sc END
FROM
#tempsddd
ORDER BY
crrid,
CASE Header
WHEN 'H' THEN 1
WHEN 'S' THEN 2
WHEN 'T' THEN 3
ELSE 0
END)
Пожалуйста, помогите мне сделать это.
Ответ №1:
Я думаю, что это синтаксис icorrect из-за инструкции «Order by», вы должны поместить order by вне скобок, и вы также используете case после order by, поэтому, пожалуйста, проверьте, правильно ли указано значение case
Комментарии:
1. Спасибо, чувак. Ты сделал мой день. Спасибо, теперь он работает