Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
dobriy-coder17
0 / 0 / 0
Регистрация: 22.07.2016
Сообщений: 4
1

Сгруппировать данные с разными датами, но одним номером в одну строку

26.07.2016, 15:54. Просмотров 768. Ответов 2
Метки нет (Все метки)

таблица имеет три поля:
id
data
num
1 2016-06-01 1000
2 2016-06-01 1001
3 2016-06-01 1002
MySQL
1
2
3
4
5
6
7
select num, 
if(data="2016-07-01",`status`,null) as "1", 
if(data="2016-07-02",`status`,null) as "2", 
from uchet where  
podr_o="Парк 2" 
group by data,num
order by id DESC
При таком запросе данные с разной датой,
но одинаковыми номерами выведется двумя строками, а как получить одну строку, чтобы сначала шел номер, а потом шли статусы этого номера по датам.
CSS
1
2
3
num    data
         01   02   03   04 
1111   да да нет да
Кроме группировки не знаю, что можно еще использовать.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2016, 15:54
Ответы с готовыми решениями:

Одним запросом - сгруппировать и усреднить
Нужна помощь! Есть таблица `table1` следующего вида ...

Как сгруппировать данные?
Делаю форум для школьного класса. При регистрации каждый из родителей (папа и...

Как сгруппировать данные
Подскажите пожалуйста,есть таблица 'product' id int(7) uid int(7) amout...

Сгруппировать данные из трех колонок
Добрый день, уважаемые коллеги :senor: Подскажите пожалуйста, как сделать...

Вывести все значения под одним номером в одну ячейку
Нужно вывести все значения под одним номером в одну ячейку через запятую. Не...

2
Anvano
212 / 188 / 91
Регистрация: 12.05.2016
Сообщений: 552
26.07.2016, 21:30 2
Лучший ответ Сообщение было отмечено dobriy-coder17 как решение

Решение

SQL
1
ORDER BY id DESC
Бесполезно, т.к. у вас поле ID не входит в выборку.

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT num 
,SUM(CASE WHEN DAY(DATA)=1 THEN 1 ELSE 0 END) AS '01'
,SUM(CASE WHEN DAY(DATA)=2 THEN 1 ELSE 0 END) AS '02'
,SUM(CASE WHEN DAY(DATA)=3 THEN 1 ELSE 0 END) AS '03'
,SUM(CASE WHEN DAY(DATA)=4 THEN 1 ELSE 0 END) AS '04'
,SUM(CASE WHEN DAY(DATA)=5 THEN 1 ELSE 0 END) AS '05'
,SUM(CASE WHEN DAY(DATA)=6 THEN 1 ELSE 0 END) AS '06'
,SUM(CASE WHEN DAY(DATA)=7 THEN 1 ELSE 0 END) AS '07'
,SUM(CASE WHEN DAY(DATA)=8 THEN 1 ELSE 0 END) AS '08'
,SUM(CASE WHEN DAY(DATA)=9 THEN 1 ELSE 0 END) AS '09'
.....
..... и т.д и т.п
,SUM(CASE WHEN DAY(DATA)=31 THEN 1 ELSE 0 END) AS '31'
FROM t
GROUP BY num;
Условие на месяц надо накладывать отдельно естественно, а то у вас сложатся ВСЕ дни разных месяцев

Единички и нолики в "Да" и "Нет" превратите сами ?
1
dobriy-coder17
0 / 0 / 0
Регистрация: 22.07.2016
Сообщений: 4
27.07.2016, 07:32  [ТС] 3
Спасибо. Вчера вечером у меня тоже завертелась мысль, что надо использовать что-нибудь из функций в условии
MySQL
1
count,min,max,sum
Единички и нолики в "Да" и "Нет" превратите сами ?
Конечно, это несложно)
Условие на месяц надо накладывать отдельно естественно
Да, сделал с 1 по последнее число месяца в условии where, иначе получается бред.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2016, 07:32

Сгруппировать строки, а разные значения в столбце записать в одну строку через запятую
Как сделать? :sorry:Все значения по полям совпадают кроме значений в двух (в...

Сделать разными цветами одну строку ListBox
Private Sub ColoredListBox_DrawItem(ByVal sender As Object, ByVal e As...

Матрица: строку с номером n сделать столбцом с номером n, а столбец с номером n- строкой с номером n
Дана действительная квадратная матрица порядка n. Преобразовать матрицу по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru