Создать новую строку для каждого условного значения в Sql Server - PullRequest
0 голосов
/ 27 марта 2019

Я хочу создать новую строку для каждого нулевого значения.Например:

Таблица Origen данных: в этой таблице два пустых значения (adidas, nike), я хочу создать новый для каждого id_brand, когда id_brand равен нулю

Формула count id_brand с нулевым значением * id_brand с ненулевым значением

6 новых строк = 2 пустых значения *3 не нулевое значение

Таблица

+-------------+-------------+----------+-------+
| id_category | description | id_brand | value |
+-------------+-------------+----------+-------+
|           5 | adidas      |          |   100 |
|           5 | nike        |          |    65 |
|           5 | samsung     |        1 |    40 |
|           5 | coca-cola   |        2 |    15 |
|           5 | puma        |        3 |    70 |
+-------------+-------------+----------+-------+

Таблица данных, которую я ожидаю, текущие строки и новые 6 строк (каждая для id_brand с ненулевым значением)

+-------------+-------------+----------+-------+
| id_category | description | id_brand | value |
+-------------+-------------+----------+-------+
|           5 | adidas      |          |   100 |
|           5 | nike        |          |    65 |
|           5 | samsung     |        1 |    40 |
|           5 | coca-cola   |        2 |    15 |
|           5 | puma        |        3 |    70 |
+-------------+-------------+----------+-------+
|           5 | adidas      |        1 |   100 |
|           5 | nike        |        1 |    65 |
|           5 | adidas      |        2 |   100 |
|           5 | nike        |        2 |    65 |
|           5 | adidas      |        3 |   100 |
|           5 | nike        |        3 |    65 |
+-------------+-------------+----------+-------+

Как я могу сделать что-то подобное в Sql?

1 Ответ

0 голосов
/ 27 марта 2019

Пока это только для отчета, и вы абсолютно уверены, что это требуется, это можно сделать с помощью простого CROSS JOIN.Я добавляю образцы данных в формате расходных материалов, и это лучший способ опубликовать их, если вы обращаетесь за помощью в SQL.

CREATE TABLE SampleData(
    id_category int,
    description varchar(100),
    id_brand    int,
    value       int
)
INSERT INTO SampleData
VALUES
    (5, 'adidas   ', NULL, 100),
    (5, 'nike     ', NULL,  65),
    (5, 'samsung  ', 1,  40),
    (5, 'coca-cola', 2,  15),
    (5, 'puma     ', 3,  70);

SELECT d.id_category, 
       d.description,
       b.id_brand,
       d.value
FROM SampleData d
CROSS JOIN SampleData b
WHERE b.id_brand IS NOT NULL
AND d.id_brand IS NULL
ORDER BY id_brand, description;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...