DISTINCT
. Да и условие можно в подзапрос перенести.SELECT DISTINCT
'34' AS PROCESS_ID,
dir.DIRECTORY_PATH AS DIRECTORY_PATH_INC,
con.EXEC_ORDER
FROM
prc_container con
JOIN prc_file_attribute fa ON fa.container_id = con.id
JOIN prc_directory dir ON fa.LOCATION_ID = dir.ID
ORDER BY EXEC_ORDER
WHERE CONTAINER_PROCESS_ID = '34'
Почему не работает DISTINCT с ORDER BY в подзапросе?Потому что для одинаковых
dir.DIRECTORY_PATH
у вас разные con.EXEC_ORDER
. И что использовать для сортировки? Неопределённости быть не должно. Первый и второй запрос относятся к одной таблице, но имеют разные условияТогда нужно использовать конструкцию:
SELECT…
FROM R_PERS_ACCOUNT PA1
JOIN R_PERS_ACCOUNT PA2
ON PA2.PA.R_PERS_ACCOUNT_ID = PA1.PA.R_PERS_ACCOUNT_ID
…
WHERE OP1.M_OPERATION_TYPE_ID = 1 AND OP2.M_OPERATION_TYPE_ID = 2
The expr argument determines the data for which you want Oracle Database to compute a hash value. There are no restrictions on the length of data represented by expr, which commonly resolves to a column name. The expr cannot be a LONG or LOB type. It cannot be a user-defined object type. All other data types are supported for expr.
SELECT dish_name FROM dish
JOIN dish_ingredients …
JOIN ingredients …
GROUP BY dish_name
HAVING ( LISTAGG( UPPER( ingredient_description ), ',' )
WITHIN GROUP ( ORDER BY ingredient_description )) = 'МУКА,САХАР,ЯЙЦО'
у вас список слов должен быть обязательно в алфавитном порядке
SELECT UPPER( LISTAGG( Name, ',' )) FROM
( SELECT 'мука' AS Name FROM dual
UNION
SELECT 'яйцо' FROM dual
UNION
SELECT 'сахар' FROM dual
ORDER BY 1 )
Посоветуйте пожалуйста, как сделать группировкуНикак. Вы не указали по каким критериям выделены группы (картинки SQL не понимает). Сумма по группе подразумевает, что записи сгруппированы. Если нужно участие одной записи в нескольких суммах, делайте подзапрос.
попадаются строки не только этой даты, но и несколько ранних датДля каждой уникальной даты сделайте отдельный подзапрос.
SELECT DISTINCT [Table].[Date],
(SELECT Count(*) FROM [Table] AS [ts]
WHERE ts.[Date] BETWEEN [Table].[Date] AND DATEADD(d, -14, [Table].[Date])
AND ts.[Check] = 1) AS CountCheck
FROM [Table]