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

Модераторы: Pr0[)!9Y, Akina, JoeUser
Страницы: (12) « Первая ... 9 10 [11] 12  все  ( Перейти к последнему сообщению )  
> Помогите с запросом
    Цитата 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)
            Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
            Есть претензии ко мне как к участнику? да ради бога.
            Не нравятся мои ответы? не читайте их.
            В общем, берегите себя. Нервные клетки не восстанавливаются.
              Спасибо.

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

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

              https://yadi.sk/i/qOGNrzvH3ZJnkK

              Мне нужно Budget с Project связать
              "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                Database Diagrams в SSMS. Или запросить скрипт создания - там будет и FK.
                Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                Есть претензии ко мне как к участнику? да ради бога.
                Не нравятся мои ответы? не читайте их.
                В общем, берегите себя. Нервные клетки не восстанавливаются.
                  Коллеги, подкиньте идею.

                  Есть например 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 раз или есть какая-то конструкция лучше?
                  "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                    Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                    Есть претензии ко мне как к участнику? да ради бога.
                    Не нравятся мои ответы? не читайте их.
                    В общем, берегите себя. Нервные клетки не восстанавливаются.
                      А можно ли как-то использовать переменную в select?
                      Например Что_то_там это длинная формула расчета и что-бы ее не переписывать несколько раз в select

                      Select Что_то_там as 'Значение1', 'Значение1'-5 as 'Значение5'
                      "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                        Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                        Есть претензии ко мне как к участнику? да ради бога.
                        Не нравятся мои ответы? не читайте их.
                        В общем, берегите себя. Нервные клетки не восстанавливаются.
                          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 не наложено требование уникальности.
                              Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                              Есть претензии ко мне как к участнику? да ради бога.
                              Не нравятся мои ответы? не читайте их.
                              В общем, берегите себя. Нервные клетки не восстанавливаются.
                                Ещё такой вопрос:
                                Есть таблица:

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


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

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


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1373 ]   [ 15 queries used ]   [ Generated: 22.09.18, 15:43 GMT ]