|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
Помогите, пож., правильно составить процедурку09.10.2006, 17:52. Показов 5521. Ответов 20
Метки нет (Все метки)
Здравствуйте!
Помогите, пож., правильно составить процедурку. У меня есть таблица, в которой имеется поле Name (Имя), DateT(Дата) и поле Cnt (Количество). В таблицу постоянно заносятся данные. Также имеется еще одна таблица, у которой поля: DateT(Дата) и все Name какие есть в первой таблице. Мне нужно сделать процедуру, которая считает для каждого Name из первой таблицы общее количество за день, а результат должен заносится во вторую таблицу. Что-то такое: tbl1 Name | DateT | Cnt -------------------- Вася | 01.09.2006 | 3 Петя | 01.09.2006 | 2 Вася | 02.09.2006 | 3 Петя | 02.09.2006 | 7 Вася | 02.09.2006 | 5 tbl2 DateT | Вася | Петя -------------------- 01.09.2006 | 3 | 2 02.09.2006 | 8 | 7
0
|
|
| 09.10.2006, 17:52 | |
|
Ответы с готовыми решениями:
20
Помогите составить Блок - схему. Пож. подскажите как составить процедурку Помогите правильно составить запрос |
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
| 09.10.2006, 18:11 | |
|
Если все именно так, как ввы напсиали (т.е. во второй таблице есть поля Вася и Петя, а не Name), то запрос будет таким:</P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes SELECT</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o
></o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000><SPAN style="mso-tab-count: 1 </SPAN>DateT<SPAN style="COLOR: gray ,</SPAN><FONT color=#000000> <o ></o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <SPAN style="mso-tab-count: 1 <FONT color=#000000> </SPAN><SPAN style="COLOR: fuchsia sum</SPAN><SPAN style="COLOR: gray (</SPAN><SPAN style="COLOR: blue case</SPAN><FONT color=#000000> <SPAN style="COLOR: blue when</SPAN><SPAN style="mso-spacerun: yes <FONT color=#000000> </SPAN><SPAN style="COLOR: red 'Вася'</SPAN><FONT color=#000000> <SPAN style="COLOR: blue then</SPAN><FONT color=#000000> cnt <SPAN style="COLOR: blue else</SPAN><FONT color=#000000> 0 <SPAN style="COLOR: blue end</SPAN><SPAN style="COLOR: gray )</SPAN><FONT color=#000000> Вася<SPAN style="COLOR: gray ,</SPAN><FONT color=#000000> <o ></o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <SPAN style="mso-tab-count: 1 <FONT color=#000000> </SPAN><SPAN style="COLOR: fuchsia sum</SPAN><SPAN style="COLOR: gray (</SPAN><SPAN style="COLOR: blue case</SPAN><FONT color=#000000> <SPAN style="COLOR: blue when</SPAN><SPAN style="mso-spacerun: yes <FONT color=#000000> </SPAN><SPAN style="COLOR: red 'Петя'</SPAN><FONT color=#000000> <SPAN style="COLOR: blue then</SPAN><FONT color=#000000> cnt <SPAN style="COLOR: blue else</SPAN><FONT color=#000000> 0 <SPAN style="COLOR: blue end</SPAN><SPAN style="COLOR: gray )</SPAN><FONT color=#000000> Петя<SPAN style="COLOR: gray ,</SPAN><FONT color=#000000> <o ></o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <o ><FONT color=#000000> </o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes FROM</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000> Tbl <o ></o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes GROUP</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000> <SPAN
0
|
|
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
| 09.10.2006, 18:16 [ТС] | |
|
У меня первый вариант.
Т.е. когда имена будут добавляться, то и процедуру придется менять? Я думал можно как-нибудь в цикле это сделать.
0
|
|
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
| 09.10.2006, 18:29 | |
|
Можно и в цикле и при помощи PIVOT.
Однако, какая необходимость создавать для каждого имени свой столбец? Это глупость, на мой взгляд.
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
|
| 09.10.2006, 18:34 | |
|
Я бы шире вопрос поставил. Зачем вообще отдельная таблица? Ведь по сути она дублирует первую из которой с помощью sum/where/group by можно всегда получить нужную информацию.
0
|
|
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
| 09.10.2006, 18:47 [ТС] | |
|
Я с вами полностью согласен, но мне поставили такую задачу :
А как в SQL можно в цикле перебрать поля?
0
|
|
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
| 09.10.2006, 18:51 | |
|
Хмм... а для каких целей, не объяснили? Это заранее неправильный подход для ХРАНЕНИЯ данных.
Подобный вид обычно применяется только в отчетах. Именно в бюазе хранить в таком виде нет никого смысла.
0
|
|
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
| 09.10.2006, 18:59 | |
|
Перебрать поля можно, к примеру, так (если дальше будете динамический SQL использовать):</P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes DECLARE</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000> @Fields <SPAN style="COLOR: blue varchar</SPAN><SPAN style="COLOR: gray (</SPAN><FONT color=#000000>1024<SPAN style="COLOR: gray )<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o
></o ></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes SET</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000> @Fields <SPAN style="COLOR: gray =</SPAN><SPAN style="COLOR: red ''<o ></o ></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <o > </o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes SELECT</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000> @Fields<SPAN style="COLOR: gray =</SPAN><FONT color=#000000>@Fields <SPAN style="COLOR: gray +</SPAN><FONT color=#000000> <SPAN style="COLOR: blue Name</SPAN><FONT color=#000000> <SPAN style="COLOR: gray +</SPAN><FONT color=#000000> <SPAN style="COLOR: red ', '<o ></o ></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes FROM</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000> syscolumns <o ></o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes WHERE</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <FONT color=#000000> ID<SPAN style="COLOR: gray =(</SPAN><SPAN style="COLOR: blue SELECT</SPAN><FONT color=#000000> ID <SPAN style="COLOR: blue FROM</SPAN><FONT color=#000000> sysobjects <SPAN style="COLOR: blue WHERE</SPAN><FONT color=#000000> <SPAN style="COLOR: blue NAME</SPAN><SPAN style="COLOR: gray =</SPAN><SPAN style="COLOR: red 'dom_our'</SPAN><SPAN style="COLOR: gray )<o ></o ></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes <o > </o ></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none <SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: yes SET</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New' mso-ansi-language: EN-US; mso-no-proof: y
0
|
|
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
| 09.10.2006, 19:49 [ТС] | |
|
Это и будет своего рода отчет за день .
0
|
|
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
| 09.10.2006, 20:00 | |
|
Тогда почитайте книжки по базам. Поверьте, полезно.
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
||||||
| 09.10.2006, 20:14 | ||||||
|
Вот такой вариант с динамическим sql можно использовать.
0
|
||||||
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
|
| 09.10.2006, 20:16 | |
|
Мда. Забыл пояснить. Данный код использует динамический sql чтобы не было нужно менять код когда в таблице tbl1 появятся новое имя, а в tbl2 соответствующее ей поле.
В первом SELECT надо сделать условоие чтобы выборка шли по текущей дате.
0
|
|
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
||||||
| 09.10.2006, 20:30 | ||||||
|
В свою очередь, мой экзампл для MS SQL2005:
0
|
||||||
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
| 10.10.2006, 15:12 [ТС] | |
|
Спасибо большое! Исчерпывающе
0
|
|
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|||||||||||
| 11.10.2006, 18:48 [ТС] | |||||||||||
|
Еще вопрос:
Если мне нужно обновить какое-то поле в таблице, то я пишу так:
Имя поля я узнал при таком запросе:
0
|
|||||||||||
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
| 11.10.2006, 18:53 | |
|
Да вы, батенька, извращенец))
а) Ваш запрос лучше будет выглядеть так: UPDATE tbl1 SET Ivan=57 WHERE DateT='09.02.2006' б) Используйте динамический SQL. Как - читайте BOL. Потрудитесь хоть что-то сами найти.
0
|
|
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
| 11.10.2006, 18:56 [ТС] | |
Что есть - то естьЕсли б я еще понимал что искать в BOL
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
|
| 11.10.2006, 18:58 | |
|
По моему только через динамический SQL такое решается. Формируем строку и выполняем ее через sp_executesql.
0
|
|
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
||||||
| 11.10.2006, 19:15 [ТС] | ||||||
|
А! Понятно! Т.е. вот так:
0
|
||||||
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
| 11.10.2006, 19:35 | |
|
ага... только перед этим сделайте PRINT строки и посомтрите что у вас получилось.
0
|
|
| 11.10.2006, 19:35 | |
|
Помогаю со студенческими работами здесь
20
Строки!! Помогите,пож-та!
Помогите правильно составить .htaccess (RewriteRule) Простой запрос. Помогите правильно составить. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|