SQL: выберите другие столбцы с нулями - PullRequest
0 голосов
/ 09 мая 2019

В настоящее время у меня нет данных в базе данных за текущую неделю, так как она не закончилась. Данные вводятся в понедельник на следующей неделе. Следовательно, запрос не показывает результатов. Запрос создается с помощью объединения.

select 
    sm.sugar_mill_name, mbz.mill, fhi.hczname as zone, sd.name as station, 
    round(nvl(wd.dvalue, 0), 1) as Station_Reading
from 
    mill_by_zone mbz
join 
    sugar_mills sm on sm.sugar_mill_name = mbz.mill
join 
    fca_hcz_info fhi on fhi.hcz = mbz.zone
join 
    zone_by_station zbs on zbs.zone = fhi.hcz
join 
    station_details sd on sd.station_num = zbs.station
join 
    weekly_data wd on wd.station_num = sd.station_num and wd.station_num = zbs.station
where 
    wd.record_year = 2019 
    and wd.record_week = 19 
    and wd.dcode = 1

Как отобразить постоянные данные, т.е. sm.sugar_mill_name, mbz.mill, fhi.hczname as zone, sd.name as station

round(nvl(wd.dvalue,0),1), так как Station_Reading в настоящее время пуст, поскольку еще не было введено никаких данных.

Results

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Вы будете использовать LEFT JOIN s для ввода еженедельных данных.При этом вам также необходимо переместить условия фильтрации в столбце в предложение ON:

select sm.sugar_mill_name, mbz.mill, fhi.hczname as zone, sd.name as station, 
    round(coalesce(wd.dvalue, 0), 1) as Station_Reading
from sugar_mills sm join
     mill_by_zone mbz
     on sm.sugar_mill_name = mbz.mill join
     fca_hcz_info fhi
     on fhi.hcz = mbz.zone join 
     zone_by_station zbs
     on zbs.zone = fhi.hcz join 
     station_details sd
     on sd.station_num = zbs.station left join 
     weekly_data wd
     on wd.station_num = sd.station_num and
        wd.station_num = zbs.station and 
        wd.record_year = 2019 and
        wd.record_week = 19 and
        wd.dcode = 1;
0 голосов
/ 09 мая 2019

Существует несколько типов объединений в SQL Server:

  • ВНУТРЕННИЙ
  • ЛЕВЫЙ
  • RIGHT
  • ПОЛНЫЙ НАРУЖНЫЙ

Посмотрите здесь , что означает каждое из этих объединений, как оно работает, и узнайте, когда использовать определенный тип объединения. В вашем конкретном случае, я думаю, вам нужно использовать LEFT JOIN для weekly_data .

P.S. Лучше всего вместо написания термина JOIN использовать полное имя соединения (INNER JOIN, LEFT JOIN и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...