Выберите диапазон дат в другой столбец

Имя Дата Счет А 01-01-2023 100 А 01-01-2023 200 А 01.03.2023 300 Б 01.02.2023 400 Б 01.03.2023 100 Б 01.03.2023 100

У меня есть эта таблица, и я хочу разделить ее на несколько столбцов даты и СУММИТЬ оценку на эту дату, используя laravel Query Builder или Raw SQL, чтобы она стала такой:

Имя 1 день День 2 День 3 А 300 0 300 Б 0 400 200

все это до текущего месяца, так что январь до 31 и так далее

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
87
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

трудно даже предположить, как вы собираетесь делать что-то специально, вы передаете значение столбца в качестве имени столбца в желаемом результате (что не имеет большого смысла с необработанным запросом sql, если только эти столбцы не динамичны).

но чтобы дать вам отправную точку, вы можете просто сгруппировать их по имени, затем по дате, а затем сделать еще одну группировку по дате в коллекции

э.и;

$result = DB::table('table_name')->select([
    'name',
    'date',
])
->selectRaw('sum(score) AS score')
->groupBy(['name', 'date'])->get();

return $result->groupBy('date');

тогда вы сможете получить результат в формате, как показано ниже;

{
    "01-01-2023" : [
        {
            "name": "A",
            "date": "01-01-2023",
            "score": "300"
        }
    ],
    "02-01-2023" : [
        {
            "name": "A",
            "date": "02-01-2023",
            "score": "300"
        }
        {
            "name": "B",
            "date": "02-01-2023",
            "score": "200"
        }
    ],
    "03-01-2023" : [
        .
        .
        .
    ]
}

Для желаемого результата таблицы лучше изменить динамические строки вместо динамического столбца.

РЕДАКТИРОВАТЬ

В отношении ответа Карла вы можете просмотреть диапазон дат и ввести дополнительный оператор выбора.

э.и. даты текущего месяца

$dateRange = \Carbon\CarbonPeriod::create(now()->startOfMonth(), now()->endOfMonth() )->toArray();

$result = DB::table('table_name')->select(['name']);

foreach ($dateRange as $date) {
    $dateFormat = $date->format('d-m-Y');
    $day = $date->format('j');
    $result->selectRaw("SUM(CASE WHEN Date = '$dateFormat' THEN Score ELSE 0 END) AS 'Day $day'");
}

return $result->groupBy('name')->get();

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

Retaker 04.02.2023 07:13

Каков наилучший способ добиться динамического столбца в laravel?

Retaker 04.02.2023 07:17

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

silver 04.02.2023 07:17

есть несколько способов добиться этого, например, сопоставление коллекции или циклический просмотр каждого элемента и переформатирование всего результата, вам нужно ПЕРВЫЙ выяснить, как должен выглядеть ваш вывод JSON, который соответствует вашей желаемой таблице.

silver 04.02.2023 07:20

Другие вопросы по теме