Удалить дублирующую строку из результатов SQL

Это мой SQL-запрос для получения результата ORACLE база данных

SELECT U."UID",
CONCAT(CONCAT(U.LNAME, ', '), U.FNAME) AS UNAME,
M.NAME,
(SELECT COUNT(LH."UID") FROM DRUPAL_SYS.LOGIN_HISTORY LH WHERE LH."UID"=U."UID" ) AS VIEWS_COUNT,
L.LOGIN as "ACCESS" FROM DRUPAL_SYS.USERS U INNER JOIN DRUPAL_SYS.LOGIN_HISTORY L ON L."UID" = U."UID"INNER JOIN ABC_WEBAPP.MEMBER_USER_ROLE MUR ON MUR.USER_ID=U.MDES_ID AND MUR.MEMBER_ID LIKE '%'
INNER JOIN ABC_WEBAPP.MEMBER M ON M.ID=MUR.MEMBER_ID WHERE U.LOGIN != 0 AND U."UID">1 ORDER BY L."LOGIN" ASC`

Это дает результат с дубликатом names

введите описание изображения здесь

Но мой ожидаемый результат должен быть как

введите описание изображения здесь

-1

Решение

SELECT U."UID",
CONCAT(CONCAT(U.LNAME, ', '), U.FNAME) AS UNAME,
M.NAME,
(SELECT COUNT(LH."UID") FROM DRUPAL_SYS.LOGIN_HISTORY LH WHERE LH."UID"=U."UID" ) AS VIEWS_COUNT,
MAX(L.LOGIN) as "ACCESS" FROM DRUPAL_SYS.USERS U
INNER JOIN DRUPAL_SYS.LOGIN_HISTORY L ON L."UID" = U."UID"INNER JOIN ABC_WEBAPP.MEMBER_USER_ROLE MUR ON MUR.USER_ID=U.MDES_ID AND MUR.MEMBER_ID LIKE '%'
INNER JOIN ABC_WEBAPP.MEMBER M ON M.ID=MUR.MEMBER_ID WHERE U.LOGIN != 0 AND U."UID">1
ORDER BY L."LOGIN" ASC`
GROUP BY UNAME, MNAME

изменено L.LOGIN в MAX(L.LOGIN) и добавил GROUP BY пункт

0

Другие решения

SELECT U."UID",
CONCAT(CONCAT(U.LNAME, ', '), U.FNAME) AS UNAME,
M.NAME,
(SELECT COUNT(LH."UID") FROM DRUPAL_SYS.LOGIN_HISTORY LH WHERE LH."UID"=U."UID" ) AS VIEWS_COUNT,
L.LOGIN as "ACCESS" FROM DRUPAL_SYS.USERS U INNER JOIN DRUPAL_SYS.LOGIN_HISTORY L ON L."UID" = U."UID"INNER JOIN ABC_WEBAPP.MEMBER_USER_ROLE MUR ON MUR.USER_ID=U.MDES_ID AND MUR.MEMBER_ID LIKE '%'
INNER JOIN ABC_WEBAPP.MEMBER M ON M.ID=MUR.MEMBER_ID WHERE U.LOGIN != 0 AND U."UID">1 GROUP BY UNAME ORDER BY L."LOGIN" ASC`
0

Для того чтобы получить одну строку результата за UID а также UNAME, вы бы сгруппировать по этим полям.

GROUP BY UID, UNAME

Затем для всех оставшихся полей решите, какое значение показывать. Например. у вас есть четыре записи для «2689 kaila, piyush», какое имя вы хотите показать? Первый? Последний? Максимум? … То же самое для количества просмотров; максимум? Сумма? И снова тот же вопрос для колонки доступа.

Пример:

select uid, uname, max(name), max(views_count), max(access)
from (<your query here>) query
group by uid, uname;

Скопируйте и вставьте (удалено предложение ORDER BY):

select uid, uname, max(name), max(views_count), max(access)
from
(
SELECT U."UID",
CONCAT(CONCAT(U.LNAME, ', '), U.FNAME) AS UNAME,
M.NAME,
(SELECT COUNT(LH."UID") FROM DRUPAL_SYS.LOGIN_HISTORY LH WHERE LH."UID"=U."UID" ) AS VIEWS_COUNT,
L.LOGIN as "ACCESS" FROM DRUPAL_SYS.USERS U INNER JOIN DRUPAL_SYS.LOGIN_HISTORY L ON L."UID" = U."UID"INNER JOIN ABC_WEBAPP.MEMBER_USER_ROLE MUR ON MUR.USER_ID=U.MDES_ID AND MUR.MEMBER_ID LIKE '%'
INNER JOIN ABC_WEBAPP.MEMBER M ON M.ID=MUR.MEMBER_ID WHERE U.LOGIN != 0 AND U."UID">1
) query
group by uid, uname;
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector