Как создать запрос к MSSQL, возвращающий фиксированное число строк, даже если данных нет?
Имеется таблица. Необходимо сделать к ней запрос и вернуть не менее 5 записей по определенным условиям. Если в таблице нет 5 записей, удовлетворяющих заданным условиям, необходимо, чтобы вернулись те записи, которые удовлетворяют условию (например, 3 записи), и еще 2 записи с какими-то фиксированными данными (числовые поля 0, строковые - пустые строки).
Пример. Таблица table
| INT id | INT data | VARCHAR str_data | INT status |
-----------------------------------------------------
| 1 | 123 | "qwert" | 1 |
-----------------------------------------------------
| 2 | 343 | "zzzzz" | 1 |
-----------------------------------------------------
| 3 | 923 | "qweq" | 2 |
-----------------------------------------------------
| 4 | 843 | "qdfgrt" | 2 |
-----------------------------------------------------
| 5 | 763 | "qddftp" | 1 |
-----------------------------------------------------
Необходим запрос (SELECT data, str_data, status FROM table WHERE status = 1)
, который вернет следующее:
| INT data | VARCHAR str_data | INT status |
--------------------------------------------
| 123 | "qwert" | 1 |
--------------------------------------------
| 343 | "zzzzz" | 1 |
--------------------------------------------
| 763 | "qddftp" | 1 |
--------------------------------------------
| 0 | "" | 0 |
--------------------------------------------
| 0 | "" | 0 |
--------------------------------------------
Единственное, что приходит в голову, это держать в таблице 5 "нулевых" записей (последние 2 строки), но этот вариант не нравится.
Источник: Stack Overflow на русском