У меня есть оператор select, и я хочу сказать, если этот оператор select не возвращает никаких строк, тогда поместите '' в каждую ячейку. Как мне это сделать?SQL, если строки не возвращаются
ответ
Похоже, что вы все еще не получаете все нужные вам строки. Правда? Я думаю, что @Joe Sefanelli является важной частью вашего решения, а затем упоминает, что вам нужно изменить INNER на LEFT.
Итак, вы говорите, что хотите отобразить все единицы в списке ваших устройств. И, если для единицы нет данных, тогда отобразите блок и пробелы для данных, которые не существуют.
Это возможное решение. Измените свой ЕКОМ на следующее:
FROM [dbo].[Unit] u
LEFT OUTER JOIN
(
SELECT *
FROM [dbo].[IUA] i
JOIN [dbo].[Reports] r ON r.[Report_ID] = i.[Report_ID]
JOIN [dbo].[State] s ON i.[St_ID] = s.[St_Id]
WHERE r.[Account] = [dbo].[fn_Get_PortalUser_AccountNumber](11-11)
AND r.[Rpt_Period] = '2126'
AND r.[RptName] = 'tfd'
AND r.[Type] = 'h'
) ir ON ir.[Unit_ID] = u.[Unit_ID]
LEFT JOIN [dbo].[UnitType] ut ON u.[UnitType] = ut.[UnitType]
WHERE u.[Unit] IN (SELECT [VALUE]
FROM dbo.udf_GenerateVarcharTableFromStringList(@Units, ','))
;
С этим изменением вы получите список единиц, которые находятся в списке @Units. Левые внешние соединения будут включать данные, связанные с каждым блоком, но не будут исключать единицы, если нет связанных данных.
Это фактически возвращает все периоды отчета, которые не будут работать, потому что я пытаюсь получить только 2126. Есть данные для единицы в разные периоды отчета, но не этот период отчета. Если я переместю это в предложение where, он все равно снова не будет возвращать строки. – user380432
К сожалению. неправильно прокомментируйте свой комментарий о предложении where. – bobs
Да, я верю, что мы только ничего не вернем ... хммм. – user380432
Попробуйте это -
IF NOT EXISTS (SELECT 'x' FROM <TABLE> ....)
BEGIN
-- Your logic goes here
END
Проблема заключается в том, что у меня может быть 1 единица, который показывает данные и 1 блок, который не отображает данные, таким образом это будет показывать только данные одного устройства, но я хочу, чтобы оба устройства отображали .... – user380432
@anicolais - для вашего второго блока, где вы хотите показать пустые данные, см. ответ от десяти. Это поможет? –
есть исходный запрос в OP – user380432
select a, b, c from t
if @@rowcount = 0
select '' as a, '' as b, '' as c
Но убедитесь, что вы понимаете, что ''
может иметь различный тип данных, чем столбцы a
, b
и c
.
Поместите пустую строку выбора в нижней части союза
select x.JobName , x.Description
from MasterJobList x
where x.IsCycleJob = 1
union all
select "" , ""
from MasterJobList x
where not exists
(
select 1
from MasterJobList x
where x.IsCycleJob = 1
)
На основании отправленного кода, я думаю, что вы хотите, чтобы пустой из столбцов из таблицы UnitType, как это только один вы» re left-join to to. В этом случае используют
ISNULL(ut.[Description], '') AS UnitType
Это все еще не возвращает строк для меня, если я говорю u.number = 'e2499', он просто не дает строк. Мне нужно это, чтобы указать номер устройства, но нет данных. – user380432
Затем некоторые из ваших текущих соединений INNER должны быть LEFT-соединениями, в зависимости от того, в какой таблице вы не находите соответствующую строку. Затем используйте ISNULL, как и в моем ответе, чтобы очистить эти столбцы. –
Таблица, в которой нет строки соответствия, является IUA, поэтому я не уверен, что я буду делать здесь, поскольку большинство из них имеют ошибки преобразования при выполнении ISNULL. – user380432
select top 1 isnull(max(col2),' ') as noNullCol from table1 where col1='x'
Макс возвращает null
, где нет строки, то isnull
функция возвращает ' '
вместо значения null
Вот пример я использую для одного столбца - это просто и только производит пустую строку, если нет совпадений в наборе данных.
select Company from customer where [email protected]
union
select '' where not exists (select 1 from customer where [email protected])
Это создает ряд пробелов, если совпадений нет.
- 1. C# Локальные строки SQL возвращаются, если оператор
- 2. C++ если утверждения не возвращаются
- 3. SQL Результаты не возвращаются C#
- 4. SQL СЛУЧАЙ в РЕГИСТРИРУЙТЕСЬ возвращаются дополнительные строки
- 5. MySQL JOIN: строки не возвращаются
- 6. Markdown - возвращает текст вместо пустой таблицы, если строки не возвращаются
- 7. SQL значение счетчика возвращаются 0, даже если номер не выделяется
- 8. как обрабатывать исключение, когда строки не возвращаются в sql
- 9. SQL-запрос с NOT IN не возвращаются ни одной строки
- 10. Строки не возвращаются из непустого таблицы
- 11. Python - если не условие не возвращаются None
- 12. findDependentRowset возвращаются все строки
- 13. mysql_fetch_row не возвращаются свежие обновленные строки
- 14. Равные строки не возвращаются к true
- 15. Python: csv.DictWriter возвращаются пустые строки, если значение является буквенно-цифровым
- 16. Facebook API возвращаются странные строки
- 17. PHP и SQL не возвращаются правильно
- 18. Результаты не возвращаются
- 19. NHibernate возвращаются неправильные результаты SQL запроса
- 20. Возврат NULL, если строки не найдены SQL
- 21. Возвращает значение, если строки не найдены SQL
- 22. Sql вставка строки, если поле не существует
- 23. Вставка Sql, если строки не существует
- 24. SQL Server - транзакции возвращаются к ошибке?
- 25. Linq к SQL-код не возвращает результаты, даже если SQL генерируется результаты возвращаются
- 26. Нулевые возвращаются вместо пустой строки
- 27. NULL Значения не возвращаются
- 28. Данные не возвращаются Ajax
- 29. Вложенные функции не возвращаются
- 30. Запросы не возвращаются ни одной строки в MySQL
В каждой ячейке чего? –
Положите «все в клетку»? Отчет SSRS? Электронная таблица Excel? –
У меня есть 2 единицы. 1 имеет данные, а 1 - нет. Я хочу показать данные с 1 единиц, но показывать только пробелы для всех остальных единиц данных, у которых нет данных. Если это имеет смысл? – user380432