2016-07-08 3 views
1

У меня есть к таблицамSqL возвращает пустую ячейку в подзапросе

один имеет поле No_, PostingDate, Code с именем таблицы «переводами» другого имеют No_, comment с именем таблицы «комментариями»

один перенос может иметь много комментариев

, но мне нужно создать запрос, который может проходить через все переводы и верхний 1 комментарий из его комментариев, но и пустой столбец комментария, если для этой передачи нет комментариев.

SELECT th.[No_], th.[Posting Date] as 'PostingDate', 
     th.[Transfer-to Code] as 'Transfer_To', icl.Comment 
FROM dbo.[company$Transfer Header] as th, 
    dbo.[company$Inventory Comment Line] as icl 
where th.No_=icl.No_ 

я получил это, но он возвращает только переводы с комментариями как я могу вернуть все трансферы и если передача не комментарий, что пустой комментарий.

+0

Добавить таблицу данных таблицы и ожидаемый результат! – jarlh

+0

что означает 'но и'? пожалуйста, перефразируйте вопрос –

+0

Переключитесь на современный, явный синтаксис 'JOIN'. Легче писать (без ошибок), читать и конвертировать в 'LEFT JOIN'. – jarlh

ответ

3

Используйте LEFT JOIN вместе с COALESCE заменить недостающие NULL значения с пустым комментарием:

SELECT th.[No_], th.[Posting Date] as 'PostingDate', 
     th.[Transfer-to Code] as 'Transfer_To', 
     COALESCE(icl.Comment, '') 
FROM 
    dbo.[company$Transfer Header] AS th 
LEFT JOIN 
    dbo.[company$Inventory Comment Line] AS icl 
    ON th.No_ = icl.No_ 
+0

Сделаю, как только смогу, но ты так быстро ответил, что я могу это сделать. – HellOfACode

1

я мог бы быть склонен использовать outer apply для этого:

SELECT th.[No_], th.[Posting Date] as PostingDate, 
     th.[Transfer-to Code] as Transfer_To, 
     COALESCE(icl.Comment, '') as Comment 
FROM dbo.[company$Transfer Header] as th OUTER APPLY 
    (SELECT TOP 1 icl.* 
     FROM dbo.[company$Inventory Comment Line] icl 
     WHERE th.No_ = icl.No_ 
    ) icl; 

Это предполагает, что вы хотите один комментарий и что, когда комментариев нет, вам нужна пустая строка.

Примечания:

  • подзапрос должен иметь ORDER BY положение, но остается неясным, как вы хотите, чтобы выбрать один комментарий.
  • Не использовать неявный JOIN синтаксис.
  • Используйте только одинарные кавычки для констант строк и дат. Хотя это разрешено при определении псевдонима столбца, они не допускаются при его использовании, поэтому это приводит только к путанице.
Смежные вопросы