Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
5 / 5 / 2
Регистрация: 11.02.2012
Сообщений: 11

Как в SQL работать со списками строк?

12.07.2012, 18:50. Показов 3930. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пример следующий:

Есть таблица
SQL
1
2
3
4
5
6
CREATE TABLE t (name CHAR(50), num INT NOT NULL);
INSERT INTO t VALUES ('text 1',1);
INSERT INTO t VALUES ('text 1',2);
INSERT INTO t VALUES ('text 2',3);
INSERT INTO t VALUES ('text 10',4);
INSERT INTO t VALUES (NULL,5);
Нужно просуммировать t.num, сгруппировав по именам t.name:
SQL
1
2
3
4
SELECT t.name, SUM(t.num)
FROM t 
GROUP BY t.name
;
Результат:
name 
NULL5
text 13
text 104
text 23

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

Я сделал это через временную таблицу:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE #list (name CHAR(50) UNIQUE NOT NULL);
INSERT INTO #list VALUES ('text 1');
INSERT INTO #list VALUES ('text 2');
INSERT INTO #list VALUES ('text 3');
 
SELECT #list.name, SUM(t.num)
FROM #list
LEFT JOIN t ON (#list.name = t.name)
GROUP BY #list.name
;
 
DROP TABLE #list;
Результат:
name 
text 13
text 23
text 3NULL

здесь приходится писать много инструкций INSERT, что загромождает код.
Есть ли более красивый и удобный способ сделать это?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.07.2012, 18:50
Ответы с готовыми решениями:

как работать со списками?
я хочу сделать список фотографий с рейтингом, за каждую фотографию можно голосовать. теперь вопрос как это реализовать в html5? как...

Как работать с выпадающими списками
Добрый день! Прошу помочь со следующим кодом. Есть книга, что-то типа формирования сметы на изделие с ценами, артикулами и т.д. Для этого...

Как правильно работать со списками в многопотоках?
Доброго времени суток уважаемые форумчане. Задам наболевший вопрос, знатокам, новичкам будет полезно Есть программа, по крайней...

4
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.07.2012, 19:23
SQL
1
2
3
4
SELECT t.name, SUM(t.num)
  FROM t 
  WHERE t.name IN ('text 1','text 2','text 3')
  GROUP BY t.name
1
5 / 5 / 2
Регистрация: 11.02.2012
Сообщений: 11
13.07.2012, 02:41  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
SQL
1
2
3
4
SELECT t.name, SUM(t.num)
  FROM t 
  WHERE t.name IN ('text 1','text 2','text 3')
  GROUP BY t.name
В результатах отсутствует строка
text 3 NULL

Мне нужно, чтобы строки с NULL присутствовали.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
13.07.2012, 08:25
Тогда без временной таблицы не обойтись

Добавлено через 49 минут
Или так
SQL
1
2
3
4
5
6
7
8
SELECT U.name, SUM(t.num) AS SumNum
  FROM (SELECT 'text 1' AS name
        UNION
        SELECT 'text 2' AS name
        UNION
        SELECT 'text 3' AS name) U
    LEFT JOIN t ON U.name = t.name
  GROUP BY U.name
0
5 / 5 / 2
Регистрация: 11.02.2012
Сообщений: 11
13.07.2012, 18:17  [ТС]
Значит в моём примере вместо
SQL
1
2
3
4
CREATE TABLE #list (name CHAR(50) UNIQUE NOT NULL);
INSERT INTO #list VALUES ('text 1');
INSERT INTO #list VALUES ('text 2');
INSERT INTO #list VALUES ('text 3');
можно записать
SQL
1
2
3
4
SELECT 'text 1' AS name INTO #list 
UNION SELECT 'text 2' 
UNION SELECT 'text 3'
;
так оно по-красивее смотрится.

похоже тема закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.07.2012, 18:17
Помогаю со студенческими работами здесь

Как в VBA работать с нумерованными списками Ворда?
Если сразу к делу, то проблема в следующем: не могу нигде найти как в VBA работать с нумерованными списками Ворда. А нужны они вот для ...

Как работать с БД SQL, не привязнной к MS SQL Server 2005
Ув. программисты. Помогите пожалуйста разобраться. Только начал работать с MS SQL Server 2005, и сразу столкнулся с проблемой. У меня есть...

Можно ли работать одновременно с двумя списками?
Можно ли работать одновременно с двумя списками? Ответ объяснить

Можно лм так работать со списками и указателями?
Задание: Реализовать ведение списка забронированных и списка купленных билетов в кинозале кинотеатра. Купленный билет содержит следующие...

Как работать с БД SQL
Нужно написать программку с базой данных. Не знаю, что лучше использовать и как. Первый раз я использовала БД когда писала веб-сайт. БД...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru