На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
Страницы: (15) « Первая ... 9 10 [11] 12 13 ... Последняя » все  ( Перейти к последнему сообщению )  
> Помогите с запросом
    Цитата Akina @
    MAX(field) - MIN(field) AS delta

    Гениально!!!
      Где найти описание шаблонов при PATINDEX ?

      У меня такая строка: "Отгрузка апрель 2018 - 50%" нужно вычленить проценты. Проценты могут быть от 0 до 100, т.е. как 1 символ, так и 3. Я думаю через PATINDEX найти вхождение этих чисел от первого пробела с права до %. Какой шаблон мне применить при поиске?

      Добавлено
      Можно так: REVERSE( SUBSTRING(REVERSE('Отгрузка май 2018 100%'),2, CHARINDEX(' ',REVERSE('Отгрузка май 2018 100%') )-1 ) )
      Но это коряво как-то. :wacko:
        А ещё лучше взять как-то последнюю группу цифр, т.е. варианты могут быть в теории - 50%, -50 %, - 50 % и надо как-то взять справа от первой цифры до последней цифры следовавшей подряд
          Вот так сделал, но это ещё корявее. Ищем первую цифру. Берем от первой цифры до конца. Идем первую нецифру в найденной подстроке.
          REVERSE(substring(REVERSE(TaskRequest.FileAs), PatIndex('%[0-9]%', REVERSE(TaskRequest.FileAs)), PatIndex('%[^0-9]%', substring(REVERSE(TaskRequest.FileAs), PatIndex('%[0-9]%', REVERSE(TaskRequest.FileAs)), len(TaskRequest.FileAs)))-1))

          Как-то можно оптимизировать?
          Сообщение отредактировано: ^D^ima -
            Цитата ^D^ima @
            Где найти описание шаблонов при PATINDEX ?

            https://docs.microsoft.com/ru-ru/sql/t-sql/...sql-server-2017

            Цитата ^D^ima @
            варианты могут быть в теории - 50%, -50 %, - 50 % и надо как-то взять справа от первой цифры до последней цифры следовавшей подряд


            pos = charindex(str, '%')
            str = left(str, pos-1)
            str = trim(str)
            str1 = reverse(str)
            pos = patindex(str1, '[^0-9]')
            str = right(str, pos-1)
              Спасибо.

              Как мне узнать каким ключом связаны 2 таблицы?

              Делаю зависимость через Studio и не понимаю:

              https://yadi.sk/i/qOGNrzvH3ZJnkK

              Мне нужно Budget с Project связать
                Database Diagrams в SSMS. Или запросить скрипт создания - там будет и FK.
                  Коллеги, подкиньте идею.

                  Есть например 2 таблицы.
                  ExpandedWrap disabled
                    ID, ФИО
                    1 Иванов
                    2 Петров
                    3 Сидоров
                     
                    ID, Дата, Сумма
                    1 01.01.2018 100руб
                    1 01.02.2018 200руб
                    2 01.05.2018 200руб


                  Как на выходе получить Таблицу такого плана:
                  ExpandedWrap disabled
                    ФИО, Январь, Февраль, март, Апрель, Май
                    Иванов 100р.   200р.
                    Петров                              200р.



                  Т.е. в зависимости от даты разносить суммы в столбцы месяцев.

                  Через case лучше делать типа Case month(Дата)=1 then сумма as 'Январь' и так 12 раз или есть какая-то конструкция лучше?
                      А можно ли как-то использовать переменную в select?
                      Например Что_то_там это длинная формула расчета и что-бы ее не переписывать несколько раз в select

                      Select Что_то_там as 'Значение1', 'Значение1'-5 as 'Значение5'
                          Akina
                          Спасибо за помощь
                            А как передать параметр в подзапрос?
                            например мне нужно А1 передать в подзапрос как условие к where
                            ExpandedWrap disabled
                              Select A1, (select B1 from table2 where table2.c1=A1)
                              From table1
                              ExpandedWrap disabled
                                Select table1.A1, (select table2.B1 from table2 where table2.c1=table1.A1)
                                From table1

                              Но с большой вероятностью запрос приведёт к ошибке, если на table2.c1 не наложено требование уникальности.
                                Ещё такой вопрос:
                                Есть таблица:

                                ExpandedWrap disabled
                                  FIO,Number
                                  Иванов 4
                                  Иванов 3
                                  Иванов 2
                                  Иванов 1
                                  Сидоров 8
                                  Сидоров 7
                                  Сидоров 6
                                  Сидоров 5


                                Нужно сгруппировать по FIO, по возрастанию Number и взять первые 2 выборки в каждой

                                Т.е. на выходе должно быть это:
                                ExpandedWrap disabled
                                  FIO,Number
                                  Иванов 1
                                  Иванов 2
                                  Сидоров 5
                                  Сидоров 6
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0420 ]   [ 16 queries used ]   [ Generated: 29.03.24, 08:42 GMT ]