powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Запрос SQL
23 сообщений из 23, страница 1 из 1
Запрос SQL
    #38256988
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Решаю такую задачу: есть ряд столбцов A, B, C. Значения столбцов A идентичны. Значения столбцов B надо сложить, но есть столбец C значения которого могут быть null или "блаблабла". Мне необходимо получить в итоге одну строку. A, B= общая сумма всех значений строк, C="блаблабла". (т.е. null будто бы и нет, но в сумме столбца B учтены).

Подскажите каким образом реализовать этот запрос. Заранее спасибо!
...
Рейтинг: 0 / 0
Запрос SQL
    #38256998
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
select max(a), sum(b), max(c)
from tabl
...
Рейтинг: 0 / 0
Запрос SQL
    #38257115
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СУБД-то хоть какая? И что всё-таки надо получить в поле, сотворённом из поля С - что-нить одно из всех? определённое (тот же максимум)? конкатенацию?
...
Рейтинг: 0 / 0
Запрос SQL
    #38257891
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL Server. Я решил квест может не самым правильным, но рабочим способом. написал представление, которое фильтрует только значение столбца <> '' и подтянул к таблице. Group by сработал на ура.
...
Рейтинг: 0 / 0
Запрос SQL
    #38257911
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MedBrat777SQL Server.Какой именно?
...
Рейтинг: 0 / 0
Запрос SQL
    #38258400
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MS
...
Рейтинг: 0 / 0
Запрос SQL
    #38258421
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Microsoft SQL Server Enterprise Edition (64-bit) если быть точным)
...
Рейтинг: 0 / 0
Запрос SQL
    #38259059
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MedBrat777Microsoft SQL Server Enterprise Edition (64-bit) если быть точным)Ты забыл еще одну часть названия - год.
А ее забывать нельзя ни в коем случае, потому что разница бывает очень большой.
...
Рейтинг: 0 / 0
Запрос SQL
    #38259629
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2008
...
Рейтинг: 0 / 0
Запрос SQL
    #38261617
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный Меч,

не работает max... оба поля и null и "бла" выдает
...
Рейтинг: 0 / 0
Запрос SQL
    #38261705
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaчто всё-таки надо получить в поле, сотворённом из поля С - что-нить одно из всех? определённое (тот же максимум)? конкатенацию?
...
Рейтинг: 0 / 0
Запрос SQL
    #38262486
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

ок. давай контанацию. SUM для char не катит же...
...
Рейтинг: 0 / 0
Запрос SQL
    #38262487
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MedBrat777Akina,

ок. давай конкатенацию . SUM для char не катит же...

опечатался.
...
Рейтинг: 0 / 0
Запрос SQL
    #38262841
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эххх.. вот с конкатенацией для группы у MS SQL хреновенько, нету готовой групповой функции... придётся, скажем, подзапрос делать.. будет что-то типа

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select
  t1.a
, sum(t1.b)
, (
    select 
      coalesce(t2.c,'') 
    from 
      tabl t2 
    where 
      t1.a=t2.a 
    and 
      t1.b=t2.b 
    for xml path('')
  )
from 
  tabl t1 
group by
  t1.a
...
Рейтинг: 0 / 0
Запрос SQL
    #38262848
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, при наличии дубликатов по паре (a,b) - будет косить... подзапрос с запросом надо коррелить по ключу либо унику.
...
Рейтинг: 0 / 0
Запрос SQL
    #38262919
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

почему представление не работает? ума не приложу. Есть поле A в таблице . Связь представления по полю A. В представлении стоит where и два фильтра. <> NULL и <>'' . То есть в идеале после представления должны остаться только записи "блабла". В итоге при выполнении запроса все равно местами выводит пустые записи. не врубаюсь почему... вроде логика грамонтая.
...
Рейтинг: 0 / 0
Запрос SQL
    #38263929
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MedBrat777<> NULLА ведь в букваре написано, как надо работать с нуллами. Но кто ж его нынче читает?
...
Рейтинг: 0 / 0
Запрос SQL
    #38264063
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, если ты про IS NOT NULL, то он автоматически меняет через дизайнер <> на IS NOT...
...
Рейтинг: 0 / 0
Запрос SQL
    #38264096
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда эти MedBrat777В итоге при выполнении запроса все равно местами выводит пустые записи"пустые записи" могут состоять из одних пробелов, например... выведите длины этих полей и посмотрите. Вот если и они окажутся нулевыми, тогда надо будет думать.
...
Рейтинг: 0 / 0
Запрос SQL
    #38266002
MedBrat777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. В парочке подзапросов криво связи выставил в дизайнере. Сам дурак, короче)
...
Рейтинг: 0 / 0
Запрос SQL
    #38279188
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MedBrat777,

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

Но хоть не зря потратите деньги...
...
Рейтинг: 0 / 0
Запрос SQL
    #38279330
svlena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то не совсем понятна задача. Можно пример из того что есть и что нужно.
...
Рейтинг: 0 / 0
Запрос SQL
    #38281011
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table MyTable
(A varchar(10) not null,
 B int not null,
 C varchar(10) null)

go

select * from MyTable

go


Код: sql
1.
2.
3.
4.
5.
6.
A          B           C          
---------- ----------- ---------- 
test       1           bnbnbmbn
test       2           NULL
test       3           bnbnbmbn
test       4           NULL


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select isnull(NULL_LESS.A,NULL_ONLY.A) as A, isnull(NULL_LESS.Sum_Less_Nulls,0) + isnull(NULL_ONLY.Sum_Nulls_Only,0), NULL_LESS.C
from
(select A, sum(B) as Sum_Less_Nulls, C
from MyTable
where C is not null
group by A,C) NULL_LESS
full outer join
(select A, sum(B) as Sum_Nulls_Only
from MyTable
where C is null
group by A) NULL_ONLY on NULL_LESS.A = NULL_ONLY.A

go



Код: sql
1.
2.
3.
4.
A                      C          
---------- ----------- ---------- 
test       10          bnbnbmbn
(1 row(s) affected)


Код: sql
1.
2.
3.
select * from MyTable

go


Код: sql
1.
2.
3.
4.
5.
6.
A          B           C          
---------- ----------- ---------- 
test       1           bnbnbmbn
test       3           bnbnbmbn

(2 row(s) affected)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select isnull(NULL_LESS.A,NULL_ONLY.A) as A, isnull(NULL_LESS.Sum_Less_Nulls,0) + isnull(NULL_ONLY.Sum_Nulls_Only,0), NULL_LESS.C
from
(select A, sum(B) as Sum_Less_Nulls, C
from MyTable
where C is not null
group by A,C) NULL_LESS
full outer join
(select A, sum(B) as Sum_Nulls_Only
from MyTable
where C is null
group by A) NULL_ONLY on NULL_LESS.A = NULL_ONLY.A

go


Код: sql
1.
2.
3.
4.
5.
A                      C          
---------- ----------- ---------- 
test       4           bnbnbmbn

(1 row(s) affected)


Код: sql
1.
2.
3.
select * from MyTable

go


Код: sql
1.
2.
3.
4.
5.
6.
A          B           C          
---------- ----------- ---------- 
test       2           NULL
test       4           NULL

(2 row(s) affected)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select isnull(NULL_LESS.A,NULL_ONLY.A) as A, isnull(NULL_LESS.Sum_Less_Nulls,0) + isnull(NULL_ONLY.Sum_Nulls_Only,0), NULL_LESS.C
from
(select A, sum(B) as Sum_Less_Nulls, C
from MyTable
where C is not null
group by A,C) NULL_LESS
full outer join
(select A, sum(B) as Sum_Nulls_Only
from MyTable
where C is null
group by A) NULL_ONLY on NULL_LESS.A = NULL_ONLY.A

go


Код: sql
1.
2.
3.
4.
5.
A                      C          
---------- ----------- ---------- 
test       6           NULL

(1 row(s) affected)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Запрос SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]