Результаты SQL для дубликатов - Oracle - PullRequest
0 голосов
/ 06 сентября 2018

ТАК сообщество, вот мой SQL-запрос, который выполняется без ошибок:

SELECT DISTINCT
    (L.LOCATION) AS "LOC",
    C.CITY_NAME AS "CIT",
    H.STREET_NAME AS "STR",
    U.APT_NAME AS "APT",
    U.NUM AS "NUM",
    L.DESCRIPTION AS "DES",
    H.POP AS "POP",
    S.STATE_CODE AS "STA",
    H.SITE_NAME AS "SIT",
    U.COUNTY AS "COU",
    L.DESCRIPTION AS "PRO"
FROM
    LOCATIONS L
    LEFT OUTER JOIN CGZIP9 Z
    ON L.L_ZIPCODE = Z.ZIPCODE
    LEFT OUTER JOIN STREET_V H
    ON L.LOCATION = H.LOCATION
    LEFT OUTER JOIN CGZIPCITY Y
    ON Z.CITYID = Y.CITYID
    LEFT OUTER JOIN CGCITY C
    ON Y.CITYID = C.CITYID
    LEFT OUTER JOIN CGSTATE S
    ON C.STATEFIPS = S.STATEFIPS
    LEFT OUTER JOIN UNIT U
    ON L.UNITID = U.UNIT_ID
WHERE
    L.LOCATION IN ('1', '2', '3', '4', '5', '1', '2', '4')
    ORDER BY L.LOCATION ASC;

Я пытаюсь получить записи для всех значений в моем IN (даже дубликаты, такие как «1», «2» и «4»)

Вот мой вывод, когда я запускаю приведенный выше код:

=============================================
|LOC|CIT|STR|APT|NUM|DES|POP|STA|SIT|COU|PRO|
=============================================
| 1 | X | X | X | X | X | X | X | X | X | X | 
| 2 | X | X | X | X | X | X | X | X | X | X |
| 3 | X | X | X | X | X | X | X | X | X | X |  
| 4 | X | X | X | X | X | X | X | X | X | X | 
| 5 | X | X | X | X | X | X | X | X | X | X |  
=============================================

Вот мой желаемый результат:

=============================================
|LOC|CIT|STR|APT|NUM|DES|POP|STA|SIT|COU|PRO|
=============================================
| 1 | X | X | X | X | X | X | X | X | X | X | 
| 2 | X | X | X | X | X | X | X | X | X | X |
| 3 | X | X | X | X | X | X | X | X | X | X |  
| 4 | X | X | X | X | X | X | X | X | X | X | 
| 5 | X | X | X | X | X | X | X | X | X | X |  
| 1 | X | X | X | X | X | X | X | X | X | X | 
| 2 | X | X | X | X | X | X | X | X | X | X |  
| 4 | X | X | X | X | X | X | X | X | X | X |  
=============================================

Любые предложения относительно того, как я могу сделать это?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

это будет работать:

SELECT
    L.LOCATION AS "LOC",
    C.CITY_NAME AS "CIT",
    H.STREET_NAME AS "STR",
    U.APT_NAME AS "APT",
    U.NUM AS "NUM",
    L.DESCRIPTION AS "DES",
    H.POP AS "POP",
    S.STATE_CODE AS "STA",
    H.SITE_NAME AS "SIT",
    U.COUNTY AS "COU",
    L.DESCRIPTION AS "PRO"
FROM
    LOCATIONS L
    LEFT OUTER JOIN CGZIP9 Z
    ON L.L_ZIPCODE = Z.ZIPCODE
    LEFT OUTER JOIN STREET_V H
    ON L.LOCATION = H.LOCATION
    LEFT OUTER JOIN CGZIPCITY Y
    ON Z.CITYID = Y.CITYID
    LEFT OUTER JOIN CGCITY C
    ON Y.CITYID = C.CITYID
    LEFT OUTER JOIN CGSTATE S
    ON C.STATEFIPS = S.STATEFIPS
    LEFT OUTER JOIN UNIT U
    ON L.UNITID = U.UNIT_ID
WHERE
    L.LOCATION IN ('1', '2', '3', '4', '5')
UNION ALL
SELECT 
    L.LOCATION AS "LOC",
    C.CITY_NAME AS "CIT",
    H.STREET_NAME AS "STR",
    U.APT_NAME AS "APT",
    U.NUM AS "NUM",
    L.DESCRIPTION AS "DES",
    H.POP AS "POP",
    S.STATE_CODE AS "STA",
    H.SITE_NAME AS "SIT",
    U.COUNTY AS "COU",
    L.DESCRIPTION AS "PRO"
FROM
    LOCATIONS L
    LEFT OUTER JOIN CGZIP9 Z
    ON L.L_ZIPCODE = Z.ZIPCODE
    LEFT OUTER JOIN STREET_V H
    ON L.LOCATION = H.LOCATION
    LEFT OUTER JOIN CGZIPCITY Y
    ON Z.CITYID = Y.CITYID
    LEFT OUTER JOIN CGCITY C
    ON Y.CITYID = C.CITYID
    LEFT OUTER JOIN CGSTATE S
    ON C.STATEFIPS = S.STATEFIPS
    LEFT OUTER JOIN UNIT U
    ON L.UNITID = U.UNIT_ID
WHERE
    L.LOCATION IN ('1', '2', '4');

удалите заказ и попробуйте объединить все.

0 голосов
/ 06 сентября 2018

Пожалуйста, попробуйте подход UNION ALL, который не отфильтровывает дубликаты, следующим образом:

SELECT DISTINCT (L.LOCATION)  AS "LOC",
                C.CITY_NAME   AS "CIT",
                H.STREET_NAME AS "STR",
                U.APT_NAME    AS "APT",
                U.NUM         AS "NUM",
                L.DESCRIPTION AS "DES",
                H.POP         AS "POP",
                S.STATE_CODE  AS "STA",
                H.SITE_NAME   AS "SIT",
                U.COUNTY      AS "COU",
                L.DESCRIPTION AS "PRO"
  FROM LOCATIONS L
       LEFT OUTER JOIN CGZIP9 Z ON L.L_ZIPCODE = Z.ZIPCODE
       LEFT OUTER JOIN STREET_V H ON L.LOCATION = H.LOCATION
       LEFT OUTER JOIN CGZIPCITY Y ON Z.CITYID = Y.CITYID
       LEFT OUTER JOIN CGCITY C ON Y.CITYID = C.CITYID
       LEFT OUTER JOIN CGSTATE S ON C.STATEFIPS = S.STATEFIPS
       LEFT OUTER JOIN UNIT U ON L.UNITID = U.UNIT_ID
 WHERE L.LOCATION IN ('1',
                      '2',
                      '3',
                      '4',
                      '5')
UNION ALL
SELECT DISTINCT (L.LOCATION)  AS "LOC",
                C.CITY_NAME   AS "CIT",
                H.STREET_NAME AS "STR",
                U.APT_NAME    AS "APT",
                U.NUM         AS "NUM",
                L.DESCRIPTION AS "DES",
                H.POP         AS "POP",
                S.STATE_CODE  AS "STA",
                H.SITE_NAME   AS "SIT",
                U.COUNTY      AS "COU",
                L.DESCRIPTION AS "PRO"
  FROM LOCATIONS L
       LEFT OUTER JOIN CGZIP9 Z ON L.L_ZIPCODE = Z.ZIPCODE
       LEFT OUTER JOIN STREET_V H ON L.LOCATION = H.LOCATION
       LEFT OUTER JOIN CGZIPCITY Y ON Z.CITYID = Y.CITYID
       LEFT OUTER JOIN CGCITY C ON Y.CITYID = C.CITYID
       LEFT OUTER JOIN CGSTATE S ON C.STATEFIPS = S.STATEFIPS
       LEFT OUTER JOIN UNIT U ON L.UNITID = U.UNIT_ID
 WHERE L.LOCATION IN ('1', '2', '4')
ORDER BY L.LOCATION ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...