Вопросы с тегами [tsql]

3

голосов
2

ответ
49

Просмотры

Как я могу получить лучшую производительность по статье накидной на T-SQL

У меня есть три таблицы. Каждая таблица содержит более 3M строк. Я бегу следующий код: SELECT * FROM (SELECT col_1, col_2, col_3, [дата], 1 как тип ОТ table_1 СОЕДИНЕНИЕ ВЫБОР col_1, col_2, col_3, [дата], 2 как тип ОТ table_2 СОЕДИНЕНИЕ ВЫБОР col_1, col_2, col_3, [дата], 3, как тип из table_3) А.С. ТБ ТБ. [дата] между (датой_начал) И (дата_окончания) ORDER BY [дата] DESC OFFSET п строк FETCH СЛЕДУЮЩЕГО т строк ТОЛЬКО Но когда я получить большой интервал дат прогона запроса медленнее , Например: Когда я получаю 2019-01-01 и 2019-04-01 интервал запроса запустить около 13-14 секунд: Этот результат очень плохо. Я хочу, чтобы получить результат в течение 1 секунды. Что я могу сделать?
0

голосов
1

ответ
16

Просмотры

Выполнение сценария для добавления первичных ключей для всех таблиц возвращает ошибку

Я хочу, чтобы добавить первичный ключ IDD каждый «Temp ...» таблицу в схеме. Я пытаюсь сделать это следующим образом: DECLARE @addId VARCHAR (MAX) = «»; ВЫБОР @addId = @addId + ALTER TABLE [ '+ TABLE_NAME +] ADD IDD INT IDENTITY (1,1); ALTER TABLE [' + TABLE_NAME +] ADD PRIMARY KEY (IDD); ' ОТ INFORMATION_SCHEMA.TABLES ГДЕ table_name LIKE '% Temp' EXEC (@addId); Я вернулся с такой ошибкой: Несколько столбцов идентификаторов, определенных для таблицы «TempTable». Только один столбец идентификаторов в таблице допускается. Что такое мой проступок? EDIT: Там нет первичного ключа уже определены в таблицах.
Passer7by
1

голосов
1

ответ
31

Просмотры

Функция T-SQL Json_modify

Функция T-SQL JSON_MODIFY имеет некоторую проблему его добавление обертки при добавлении новой пары значений, как заявляет @jsonstring VARCHAR (макс) = '{ "Ширину": "100%", "длина": "45%"}' выберите JSON_MODIFY ( @ jsonstring, 'добавить $ .height', '50%») - {выход "Ширина": "100%", "Длина": "45%", "Рост": [ "50%"]} - Его добавление обертка я неспособен удалить эту оболочку - ожидая выхода { «Ширина»: «100%», «Длина»: «45%», «Высота»: «50%»}
Kumar_2002
1

голосов
3

ответ
71

Просмотры

GROUP BY заявление с командой PIVOT в T-SQL

У меня есть запрос SQL, который включает в себя команду PIVOT, которая создает правильную таблицу, но теперь мне нужно GROUP BY одной из колонн. Когда я пытаюсь добавить GROUP BY заявление, она возвращается следующее сообщение об ошибке: «Колонка„PivotTable.1“недопустим в списке выбора, поскольку он не содержится ни в статистической функции или предложения GROUP BY.» SELECT [Load ID], [1], [2], [3], [4] ОТ TMS_Load_Stops PIVOT (MIN ([Стоп Zip]) для [Sequence] В ([1], [2], [3], [4])) сводная таблица; Исходный код дает следующие результаты: И я хотел бы, чтобы результаты были следующим образом (значения случайных чисел для объяснения целей):
C1-14MP
1

голосов
5

ответ
74

Просмотры

как найти таблицы, которые имеют столбцы значения, если я не знаю таблицу

У нас есть приложение, используемое в работе, которая была создана третьей стороной. Таким образом, мы имеем доступ к пользовательскому интерфейсу и не кода серверной. В этом приложении есть выпадающий список. У меня есть доступ к MSSQL БД, что это приложение работает на. Мне нужно знать, где этот выпадающий список получает информацию от но я не знаю, какую таблицу он использует (потому что я не могу проверить код непосредственно). Есть ли запрос, я могу написать для поиска по всей БД для таблиц, имеющих столбцы, которые содержат определенное значение? Значения DropDownList являются: WebsiteAPP СЭП приложение Walkin BotLead
Kalyn
1

голосов
2

ответ
45

Просмотры

Как я могу иметь UNION псевдонимов столбцов уважения?

Извините за плохой титул, я не мог придумать ничего лучшего. Вы можете редактировать. Я должен работать с таблицей БД, которая использует один столбец для хранения различных типов информации (фамилия, если лицо, название компании, если компания). Кошмар, я знаю, но это то, что она есть. Для того, чтобы различать смысл, есть еще один столбец с целым числом, которое определяет тип, что в столбце Имя. Схема этой таблицы выглядит следующим образом (упрощенный): ID INT DTYPE имя INT VARCHAR (50) Таким образом, образец может выглядеть следующим образом: ID имя DTYPE ----------------- ---------- 1 0 2 0 Smith Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. Я пытаюсь нормализовать это с помощью следующего кода T-SQL: с компаниями AS (SELECT ID, имя AS компания ОТ NameTable ГДЕ DTYPE = 1), люди AS (SELECT ID, имя AS человека от NameTable WHERE DTYPE = 0), SELECT * FROM компании UNION ALL SELECT * FROM людей; То, что я надеялся получить новый стол со схемой: ID DTYPE компании человека, или в виде таблицы: ID DTYPE лицо компании ----------------------- ------------------- 1 0 2 0 Smith Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называется человек вместо имени, но он по-прежнему только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. SELECT * FROM компании UNION ALL SELECT * FROM людей; То, что я надеялся получить новый стол со схемой: ID DTYPE компании человека, или в виде таблицы: ID DTYPE лицо компании ----------------------- ------------------- 1 0 2 0 Smith Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называется человек вместо имени, но он по-прежнему только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. SELECT * FROM компании UNION ALL SELECT * FROM людей; То, что я надеялся получить новый стол со схемой: ID DTYPE компании человека, или в виде таблицы: ID DTYPE лицо компании ----------------------- ------------------- 1 0 2 0 Smith Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называется человек вместо имени, но он по-прежнему только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. ID DTYPE лицо компании ------------------------------------------ 1 0 Smith 2 0 Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называют человека вместо имени, но это еще только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. ID DTYPE лицо компании ------------------------------------------ 1 0 Smith 2 0 Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называют человека вместо имени, но это еще только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили.
vic
1

голосов
3

ответ
27

Просмотры

Как вы можете запросить на основе накопленной суммы одного столбца?

Поэтому предположим, у меня есть следующая таблица: Теперь предположим, что запрос на это: SELECT JobNo, WorkCenter, EstimMinutes из Списка WHERE WorkCenter = «Шлифование» Теперь предположим, что шлифовального ежедневно емкость 500 ежедневных минут, так что если бы я передать их график сегодняшний день, я только хочу, чтобы показать работу вплоть до работы, которая идет по 500-ю минуты. Таким образом, в этом случае, я хочу вернуть только те строки, выделены зеленым цветом, общее количество которых составляет 505 Всего по оценкам минут. Как бы я идти об этом? Я пытался делать: WHERE SUM (EstimMinutes) <500 Но это, очевидно, не работает. Не совсем уверен, если это возможно, чтобы сделать это, и если да, то в каком направлении я должен идти в. Любая помощь очень ценится
user1452574
1

голосов
0

ответ
68

Просмотры

TSQL from 2012 to 2016, lost all performance on same query

Я сталкиваюсь с этой проблемой при тот же запрос выполняется, по крайней мере в 30 раз медленнее 2016v, и это было только для выборки данных, в реальной жизни он никогда не закончится, я побежал это 24hr +, я вижу, что уровень инфляции очень высок, имея 2 ЗАПИСИ на входе производит 200K строк. Этот запрос производит довольно сложный план выполнения, и они разные. Сейчас я решить эту проблему, изменяя уровень Compatblity на 2016 сервере. Для начала я просто предоставить общую информацию с этим псевдо-кодом, может быть, кто-то может обнаружить что-то сразу. Обратите внимание, что там ANSI не выбрать на FROM заявления. Перебирая планы EXEC будет мой следующий шаг ..... Этот SQL генерируется унаследованного приложения, первоначально созданный для работы с Oracle, они поставили нам MS версию позже. Это некоторые детали с примером запроса, который сделал этот беспорядок ниже: SELECT @@ VERSION MS SQL Server 2016 (SP1-CU3) (KB4019916) - 13.0.4435.
Mike S
1

голосов
1

ответ
66

Просмотры

Количество знаков после запятой, возвращенного деления целых чисел?

--in сервер SQL 2005. SELECT, 5/13; ----> 0 SELECT CAST (5/13 А.С. реальный); -> 0 ВЫБРАТЬ 5.00 / 13.00; -> 0.3846153 SELECT CAST (5/13 в десятичном (10, 2)); -> 0.00 SELECT CAST (5 в десятичной системе) / литой (13 в виде десятичных); -> +0,3846153846153846153 Есть глобальный параметр для количества знаков после запятой, возвращаемой путем деления целых чисел? Все, что мне нужно, чтобы получить результат, как .38
Nabil
1

голосов
1

ответ
50

Просмотры

Azure Стрим Analytics: Как использовать два Azure Machine Learning Function

Я использую два Azure функции Machine Learning в потоке Analytics, но похоже, может быть использован только один на запрос. Как я могу разделить его на два запроса? Работа потокового не удалась: Поток Analytics работа имеет ошибки проверки: Несколько функций веб-служб БОД, используемых в подзапроса. Шаг запрос не может содержать не более одной функции AML. Разделите шаг на несколько шагов. С подзапроса как (SELECT идентификатор в качестве идентификатора, DeviceId в DeviceId, имя пользователя, как имя пользователя, try_cast (LocalTime в DateTime) как МестноеВремя, AC как AC, FM, как FM, UC как UC, DL как DL, DS как DS, DP, как DP, LB, как LB, ASTV как ASTV, MSTV как MSTV, ALTV как ALTV, MLTV как MLTV, ширина, как ширина, Мин, как Мин, Макс, как Макс, Nmax как Nmax, Nzeros как Nzeros, режим как режим, Средний, как среднее, медиана, как Медиана,
SamTew
1

голосов
2

ответ
53

Просмотры

SQL - UPDATE СЛУЧАЙ без JOIN

немного послушника. Я пытаюсь написать запрос обновления на версированной зрения (таблица «V») из базы данных SDE Esri в SQL Server. Я обновить представление, используя данные, полученные из других процессов и сохранены в таблице «у». Мнение имеет Вместо обновления триггера, так что я создал этот запрос с помощью подзапроса, чтобы избежать вступления в вид, который будет создавать и ошибок с триггером. ОБНОВЛЕНИЕ V SET v.ma = (SELECT j.mc ОТ J ГДЕ j.key = v.key И j.ma j.mc); Этот запрос работает за исключением того, что есть нулевые записи в «j.mc», что я не хочу, чтобы обновить «v.ma» Я пытался использовать этот саз, чтобы обойти это. ОБНОВЛЕНИЕ V SET v.ma = (случай, когда j.mc IS NOT NULL И j.ma j.mc ТОГДА (SELECT j.mc ОТ J ГДЕ j.key = v.key) ИНАЧЕ j.ma КОНЕЦ) ОТ J; К сожалению, есть две проблемы, я знаю с этим сазе. Во-первых, есть подразумеваемая присоединиться к «V» и «J», который создает ошибку с триггером. Во-вторых, вложенный запрос возвращает более одного значения, которое не разрешено в рамках CASE. Я изо всех сил пытался придумать способ, чтобы обойти эти два вопроса, следовательно: Есть ли способ сделать это сазе работу? Если я не должен приближаться эту проблему другим способом, например в IF..ELSE или CURSOR? Есть ли способ сделать это саз работу? Если я не должен приближаться эту проблему другим способом, например в IF..ELSE или CURSOR? Есть ли способ сделать это саз работу? Если я не должен приближаться эту проблему другим способом, например в IF..ELSE или CURSOR?
Simon.y
1

голосов
1

ответ
302

Просмотры

SQL Server Cannot Build Execution Plan

Я использую Microsoft SQL Server 2016 Enterprise с пакетом обновления 1: Ядро на основе лицензирования (64-разрядная версия) Версия 13.0.4411.0 и у меня есть очень странное проблема, я не знаю, как решить. У меня есть (правда, довольно большой) запрос, который объединяет более 100 таблиц. Я написал оригинальное некоторое время назад и запустить запрос много раз с джойном на 100+ столов, но я хотел, чтобы ускорить его, так что я потратил много времени, настраивая его, изменяя все ЛЕВЫЙ вливается в ВНУТРЕННИЙ JOINS и декодирование всего спектра-присоединяется к точным значениям для спичек и добавления соответствующих индексов покрытия и т.д. присоединяется построено с помощью динамического SQL, так что число объединений является неточным, и моим тестированием с этим запросом настройки было меньше объединения таблиц (63). С 63-соединения таблиц Я был очень успешным при ускорении кода; он работает на долю времени оригинал взял. Но когда я реализовал код и попытался запустить 100+ таблицы, аналогичной присоединиться запросом, SQL только работает навсегда (он используется, чтобы занять несколько минут, теперь я должен был убить его после того, как целый день подряда). Ничего, что я изменил бы логично сделать код медленнее. Я добавил некоторые полезные уникальные индексы облицовочных, изменился некоторый диапазон присоединяется к точному матч присоединяется, как A.Field1 между B.FieldA и B.FieldB к A.Field1 = B.Field1 И все изменился ВЛЕВО вливается в INNER JOIN и (данные очищенах до таких, что все строки будут иметь матч во всех таблицах, так что «ЛЕВЫЙ» больше не было необходимости). Обычно это хорошо ... SQL иногда делает неожиданные вещи ..., я могу генерировать предполагаемый план выполнения и попытаться выяснить, что пошло не так. Но SQL прямо вверх не может генерировать план выполнения запроса для запроса. Он работает навсегда. Я' ве пытались обновить статистику и работает с (QUERYTRACEON 9481) использовать старый план выполнения компилятор, но и не помогло. Вот сумасшедшая часть: после того, как много испытаний я абсолютно уверен, что это только план выполнения, который занимает много времени, и что фактическое выполнение кода происходит очень быстро. Ручное удаление включается, пока он не работает, я получил его, чтобы создать план выполнения после нескольких часов. Идущие тот же код занимает столько же времени, как только генерируя предполагаемый план выполнения. План значительно проще и стоит гораздо меньше, чем старая версия с ЛЕВОЙ соединения и между операторами (которые, замечу, работает менее чем за 5 минут). С точки зрения «Запрос стоимости», если я генерировать план выполнения для обоих, 98% от стоимости на старом коде и 2% на новый код. Но старый план генерирует в течение нескольких секунд, и я не могу даже получить план для создания нового более эффективного кода со всеми стыками включен. Я никогда не работать в такой ситуации, как это, и я вроде на кирпичной стене, как отлаживать ... Я не знаю, как ускорить выполнения планировщика SQL в. Это вне моей компетенции. Если бы это было просто вопрос запрос слишком сложным, я думаю, что исходный код будет видеть этот же вопрос, так как это намного сложнее все вокруг. Это, кажется, что-то еще, как ошибка, которая применяется только к большому количеству внутренних соединений, но не много слева присоединяется или ... Я понятия не имею ... Любая помощь будет оценена. м вид на кирпичную стену, как отлаживать ... Я не знаю, как ускорить выполнения планировщика SQL в. Это вне моей компетенции. Если бы это было просто вопрос запрос слишком сложным, я думаю, что исходный код будет видеть этот же вопрос, так как это намного сложнее все вокруг. Это, кажется, что-то еще, как ошибка, которая применяется только к большому количеству внутренних соединений, но не много слева присоединяется или ... Я понятия не имею ... Любая помощь будет оценена. м вид на кирпичную стену, как отлаживать ... Я не знаю, как ускорить выполнения планировщика SQL в. Это вне моей компетенции. Если бы это было просто вопрос запрос слишком сложным, я думаю, что исходный код будет видеть этот же вопрос, так как это намного сложнее все вокруг. Это, кажется, что-то еще, как ошибка, которая применяется только к большому количеству внутренних соединений, но не много слева присоединяется или ... Я понятия не имею ... Любая помощь будет оценена.
JoZ
1

голосов
1

ответ
174

Просмотры

TSQL UPDATE на основе MAX (Дата) в другой таблице

Я надеялся, что кто-то может дать мне руку с моей проблемой. У меня есть 2 таблицы: Поставщик и Оплата. Таблица Поставщик состоит из числа поставщиков и флаг, указывающий, включена ли учетная запись или нет. Поставщик -------- NUM ENAFLG Тогда у меня есть таблица оплаты, которая показывает все платежи, сделанные поставщики, включая дату платежа (ACCDAT). Оплата ------- SUPNUM ACCDAT Что мне нужно сделать, это поставщик отключается, если их последний платеж был сделан до того '01 / 01 / 2016' . Вот что я имею, но я получаю следующее сообщение об ошибке: подзапрос возвращает более чем на 1 значение. Это не допускается, когда подзапрос следует =,! =, = Или когда вложенный запрос используется в качестве выражения. Заявление было прекращено. Я должен быть в состоянии передать несколько значений для обновления таблицы поставщиков. UPDATE ДБО. ПОСТАВЩИК SET ENAFLG_0 = 1, где NUM_0 = (SELECT pay.SUPNUM_0 ОТ dbo.PAYMENT как платить РЕГИСТРИРУЙТЕСЬ dbo.SUPPLIER AS бит ПО bps.NUM_0 = pay.SUPNUM_0 GROUP BY pay.SUPNUM_0 HAVING MAX (pay.ACCDAT_0) <'01 / 01 / 2016' ) Любая помощь будет принята с благодарностью! Спасибо!
Odessit
1

голосов
2

ответ
44

Просмотры

SQL - записи Обновления на основе предыдущей записи субъекта

У меня есть временная таблица, которая имеет EntityId, дату начала, дату окончания и количество дней. Я получаю количество дней, получая DATEDIFF между даты начала и окончания и +1 день. Проблема, которую я имею, когда предприятие имеет вторую запись, которая имеет ту же дату начала своей предыдущей даты окончания, я получаю количество дней 1 слишком много. т.е. .: EntityId StartDate EndDate NumOfDays -------- --------- ------- --------- 3414 02/01/2018 02/02 / 2018 2 3414 02/02/2018 02/10/2018 9 Мне нужно сделать StartDate второй записи, чтобы быть 02/03/2018 и NumOfDays становится 8, так что весь диапазон дней 10, который будет правильным. Таблица температуры заказана на EntityId, StartDate. Там будет тысячи записей в таблице и, возможно, несколько сотен, что имеет этот случай. Мне нужно только, чтобы изменить дату начала, если предыдущая дата окончания этого объекта является то же самое. Должен ли я сделать петлю? Курсор? Или есть лучший способ? Мы на SQL Server 2014
John Chandler
1

голосов
1

ответ
45

Просмотры

Идемпотентный QUOTENAME ()?

Функция QUOTENAME () в TSQL это часто используется при создании динамического SQL для обработки «специальные» charatcers в пределах имен. Если один завершаться с избыточными вызовами через вложенную код разваливается. объявить @name SysName = 'простое-' печати '@name:' + @name печати 'QUOTENAME (@name):' + QUOTENAME (@name) печати 'QUOTENAME (QUOTENAME (@name)):' + QUOTENAME (QUOTENAME (@ имя)) результаты @name: QUOTENAME простое-(@name): [простое-] QUOTENAME (QUOTENAME (@name)): [[простое-]]] Помимо убедившись, что это своего рода прикованных звонки невозможны в кодовую, есть кто-нибудь версия идемпотента, что является безопасной даже для вложенных вызовов?
Karl Kieninger
1

голосов
2

ответ
43

Просмотры

SQL заселения пользовательских таблицы с составным первичным ключом

Я бегу в проблему, где я пытаюсь заполнить таблицу, состоящую из пользователей и задач. В таблице в настоящее время имеет несколько пользователей, которые выполнили задачи и Eсть ограничения, когда пользователь не может выполнить ту же задачу дважды. Вот пример: * UsersTable * * TasksTable * ** ** ** Пользователи Пользователи ** ** ** TaskCompleted User1 User1 TASK1 User1 User1 Task2 User3 User3 TASK1 Пользователь4 Пользователь4 Task3 USER5 User6 Моя цель состоит в том, чтобы проверить, если все пользователи завершили tASK1 и если они не затем вставить в «TasksTable», чтобы показать, что они завершили tASK1. Тогда я хотел бы сделать то же самое для TASK2. Там не должно быть никаких изменений в Task3. Все мои попытки потерпели неудачу, так что я вернулся к квадрату один без реального рабочего кода. Тем не менее, моя идея состоит в том, чтобы сравнить список всех пользователей в список пользователей, имеющих Целевой в вопросе уже завершены, и затем дифф два списка, чтобы получить список пользователей, которые не выполнили задачу. Я не знаю, как я могу писать на это, хотя. Любые предложения или примеры будут оценены.
Nick
1

голосов
1

ответ
43

Просмотры

Значение XML-узел T-SQL

Я пытаюсь извлечь значения из следующего XML-документа сказки Test1 test2, но у меня проблемы с получением текстовых значений предметно-пространство, то есть «Test1» Я использую ниже T-SQL для извлечения остальных значений я использую кросс Апи на узле, как я требовал, чтобы это цикл, чтобы получить все значения, чтобы не использовать [1] и т.д., чтобы извлечь его таким образом, как я не знаю, сколько предметная область будет. Любые идеи ВЫБРАТЬ, a.APIXMLResponse.value ( '(ответ [1] / запись [1] / название [1])', 'VARCHAR (250)') как название, sa.value ( '(./@ код) ' 'VARCHAR (10)') А.С. SubjectAreaCode, sa.value ( '(./@ Abbrev)', 'VARCHAR (10)') КАК SubjectAreaAbbrev ОТ [DBO]. [APIXML] в поперечном СОХРАНИТЬ APIXMLResponse.nodes (' ответ / запись / субъект-область ") А.С. SubjectArea (са)
Gelder
1

голосов
1

ответ
135

Просмотры

Visual Studio 2013 и SSRS: Функция CONCAT требует два аргумента

Мой запрос отлично работает в среде SQL Server Management Studio, 2014, но когда я ставлю запрос в SSRS в Visual Studio 2013, я получаю сообщение об ошибке: функция CONCAT требует два аргумента. Мой код: SELECT a.identityID, {Fn CONCAT (a.firstName, '', SUBSTRING (a.middleName, 1, 1), '', a.lastName, a.suffix)} AS 'name1', {п CONCAT (c.firstname, '', c.lastname)} AS 'name2', {Fn CONCAT (d.number, '', d.prefix, '', d.street, '', d.tag, '', d.apt, '', d.city, '', d.state, '', d.zip)} AS 'Адрес' от человека в качестве левого внешнего соединения identityOther AS B ON a.identityID = b.identityID LEFT OUTER РЕГИСТРИРУЙТЕСЬ идентичность КАК С на a.identityID = c.identityID LEFT OUTER JOIN адрес АС Д на a.identityID = й.
mikjall77
1

голосов
1

ответ
231

Просмотры

T-SQL/CLR function for deterministic encryption

У меня есть таблица с пользовательской таблицей Агенты Строки со следующей структурой: UserAgentStringID INT UserAgentStringValue VARBINARY (8000) кодом [UserAgentStringValue] поле шифруются с помощью симметричного ключа. Предыдущая версия структуры таблицы была: UserAgentStringID INT UserAgentStringValue NVARCHAR (4000) UserAgentStringHASH БИНАРНЫМ (32) и у меня есть индекс по столбцу [UserAgentStringHASH] для оптимизированных искателей. С помощью нового формата, такой индекс не является эффективным, как функция ШИФРОВАНИЯ использует InitializationVector для того, чтобы генерировать случайные значения каждый раз, когда функция шифрования вызываются с тем же вводом: векторы инициализации используется для инициализации алгоритма блока. Оно не предназначено быть секретом, но он должен быть уникальным для каждого вызова функции шифрования во избежание откровенных моделей. Так, Я могу создать индекс на моем зашифрованного поле, но если я пытаюсь искать по зашифрованному значению, я не буду в состоянии найти что-нибудь. Я не хочу использовать HASH, потому что с помощью хэш-функции не является безопасным методом. Если кто-то есть мои данные таблиц и таблицы со всеми или огромным количеством пользовательских агентов, то он / она сможет выполнить соединят хэш и раскрыть свои данные. В SQL Server 2016 SP стандартной версии мы всегда шифруется, что позволяет с помощью Детерминированные шифрования для значения столбца - это означает, что равные сравнения работают и индексы могут быть созданы. Я искал способ оптимизации поиска по другой технологии или способу реализации детерминированного шифрования с использованием CLR, например? Зная, там нет работы вокруг хорошо для меня тоже. Я предполагаю, что я буду платить защиту данных с производительностью. Я не буду в состоянии найти что-нибудь. Я не хочу использовать HASH, потому что с помощью хэш-функции не является безопасным методом. Если кто-то есть мои данные таблиц и таблицы со всеми или огромным количеством пользовательских агентов, то он / она сможет выполнить соединят хэш и раскрыть свои данные. В SQL Server 2016 SP стандартной версии мы всегда шифруется, что позволяет с помощью Детерминированные шифрования для значения столбца - это означает, что равные сравнения работают и индексы могут быть созданы. Я искал способ оптимизации поиска по другой технологии или способу реализации детерминированного шифрования с использованием CLR, например? Зная, там нет работы вокруг хорошо для меня тоже. Я предполагаю, что я буду платить защиту данных с производительностью. Я не буду в состоянии найти что-нибудь. Я не хочу использовать HASH, потому что с помощью хэш-функции не является безопасным методом. Если кто-то есть мои данные таблиц и таблицы со всеми или огромным количеством пользовательских агентов, то он / она сможет выполнить соединят хэш и раскрыть свои данные. В SQL Server 2016 SP стандартной версии мы всегда шифруется, что позволяет с помощью Детерминированные шифрования для значения столбца - это означает, что равные сравнения работают и индексы могут быть созданы. Я искал способ оптимизации поиска по другой технологии или способу реализации детерминированного шифрования с использованием CLR, например? Зная, там нет работы вокруг хорошо для меня тоже. Я предполагаю, что я буду платить защиту данных с производительностью. Если кто-то есть мои данные таблиц и таблицы со всеми или огромным количеством пользовательских агентов, то он / она сможет выполнить соединят хэш и раскрыть свои данные. В SQL Server 2016 SP стандартной версии мы всегда шифруется, что позволяет с помощью Детерминированные шифрования для значения столбца - это означает, что равные сравнения работают и индексы могут быть созданы. Я искал способ оптимизации поиска по другой технологии или способу реализации детерминированного шифрования с использованием CLR, например? Зная, там нет работы вокруг хорошо для меня тоже. Я предполагаю, что я буду платить защиту данных с производительностью. Если кто-то есть мои данные таблиц и таблицы со всеми или огромным количеством пользовательских агентов, то он / она сможет выполнить соединят хэш и раскрыть свои данные. В SQL Server 2016 SP стандартной версии мы всегда шифруется, что позволяет с помощью Детерминированные шифрования для значения столбца - это означает, что равные сравнения работают и индексы могут быть созданы. Я искал способ оптимизации поиска по другой технологии или способу реализации детерминированного шифрования с использованием CLR, например? Зная, там нет работы вокруг хорошо для меня тоже. Я предполагаю, что я буду платить защиту данных с производительностью. В SQL Server 2016 SP стандартной версии мы всегда шифруется, что позволяет с помощью Детерминированные шифрования для значения столбца - это означает, что равные сравнения работают и индексы могут быть созданы. Я искал способ оптимизации поиска по другой технологии или способу реализации детерминированного шифрования с использованием CLR, например? Зная, там нет работы вокруг хорошо для меня тоже. Я предполагаю, что я буду платить защиту данных с производительностью. В SQL Server 2016 SP стандартной версии мы всегда шифруется, что позволяет с помощью Детерминированные шифрования для значения столбца - это означает, что равные сравнения работают и индексы могут быть созданы. Я искал способ оптимизации поиска по другой технологии или способу реализации детерминированного шифрования с использованием CLR, например? Зная, там нет работы вокруг хорошо для меня тоже. Я предполагаю, что я буду платить защиту данных с производительностью.
gotqn
1

голосов
1

ответ
2.3k

Просмотры

SQLServer: Ссылка на объект не указывает на экземпляр объекта

Вот скриншот ошибки я получаю. Вот фрагмент кода я завязывания запустить USE [Warehouse_PCL] GO / ****** Объект: Таблица [DBO] [RouteTable] Дата сценария:. 2/19/2018 2:27:57 PM ***** * / SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [DBO]. [RouteTable] ([BranchID] [INT] NOT NULL, [StoreID] [INT] NOT NULL, [WaveGroup] [INT] NOT NULL, [Wave] [INT] NOT NULL, [Aisle] [INT] NOT NULL, [Lane] [INT] NOT NULL, CONSTRAINT [PK_RouteTable] PRIMARY KEY CLUSTERED ([BranchID] ASC, [StoreID] ASC, [WaveGroup] ASC, [Wave] ASC, [междурядья] ASC) С (PAD_INDEX = ВЫКЛ, STATISTICS_NORECOMPUTE = ВЫКЛ, IGNORE_DUP_KEY = ВЫКЛ, ALLOW_ROW_LOCKS = О, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] GO Я не уверен, что является причиной этого, любые thouhts? Дайте мне знать, если есть любая другая информация, я могу обеспечить, чтобы помочь. =================================== Невозможно выполнить сценарий. =================================== объекта не задана ссылка на экземпляр объекта. (Microsoft.VisualStudio.Editor.Implementation) ------------------------------ Программа Расположение: в Microsoft.VisualStudio.Editor.Implementation .VsTextViewAdapter.SetScrollPosition (Int32 IBar, Int32 iFirstVisibleUnit) в Microsoft.SqlServer.Management.UI.VSIntegration.Editors.VSTextEditorTabPage.Clear () в Microsoft.SqlServer.Management.UI.VSIntegration.Editors.DisplaySQLResultsControl.Clear () в Microsoft. SqlServer.Management.UI.VSIntegration.Editors.DisplaySQLResultsControl.
canaan seaton
1

голосов
0

ответ
90

Просмотры

T-Sql обновление и избежать конфликтов

Я пытаюсь перенести приложение Tomcat с помощью Postgres 9.5 для SQL Server 2016 и у меня есть проблемы заявление, которое я не могу показаться, чтобы дублировать. Это в основном upsert, но один из осложнений является запрос поставляет аргументы, чтобы сделать обновление, но когда есть конфликт, мне нужно использовать некоторые из существующих значений из конфликтующих строк для вставки / обновления. Первичные ключи в таблице иногда может привести к конфликту, который требует обновления строк и удаление старых. Схема таблицы в MS SQL выглядит следующим образом:. CREATE TABLE [DBO] [Регистрация] ([site_key] [VARCHAR] (32) NOT NULL, [list_id] [BIGINT] NOT NULL, [email_address] [VARCHAR] (256) NOT NULL, [customer_id] [BIGINT] NULL, [attribute1] [VARCHAR] (64) NULL, [date1] [DateTime] NOT NULL, [дата2] [DateTime] NULL, то site_key И signup_delete.customer_id = updated_rows.customer_id И signup_delete.list_id = updated_rows.list_id И signup_delete.email_address: EMAILADDRESS; Два аргумента поставляется, идентификатор клиента и адрес электронной почты, показанный здесь как значения Весны NamedParameterJdbcTemplate: CUSTOMERID и: EMAILADDRESS Он пытается изменить адрес электронной почты идентификатора клиента, чтобы быть в комплекте поставки, но иногда прилагаемый адрес электронной почты уже существует в первичном основные сдерживающий фактор. В этом случае необходимо изменить существующий идентификатор клиента, который должен подаваться один, и удалите строки с, которые не соответствуют новому адресу электронной почты. Также нужно попытаться сохранить изоляцию, так что ничто не может изменить данные, пока я обновляю. Я пытаюсь сделать это с MERGE заявление, но я не могу заставить его работать, это S жаловаться я не могу использовать значения, которые не входят в рамки статьи, но я думаю, что я, вероятно, есть и другие вопросы здесь. Это то, что я имел до сих пор. Он даже не рассматривается удаляемая части - только upserting, но я даже не могу получить эту часть работы. Я планировал использовать выход из этого в качестве вклада в то, чтобы удалить строки, подобные версии Postgres. С источником AS (SELECT CS. [Site_key], как existing_site_key, cs.list_id, как existing_list_id, cs.email_address как existing_email, cs.customer_id, как existing_customer_id, cs.attribute1 как existing_attribute1, cs.date1 как existing_date1, cs.date2, как existing_date2, CS2 .email_address, как conflicting_email, cs2.customer_id КАК conflicting_customer_id ОТ [DBO]. [регистрация] CS LEFT JOIN [DBO]. [регистрация] CS2 пО CS2.
tubbs_uk
1

голосов
1

ответ
181

Просмотры

Все значения в ответ JSON, включая числовые значения должны быть в двойных кавычках

Iam пытается получить данные из таблицы в формате JSON с ниже запроса в SQL Server, выберите * из TableA для JSon пути, корень ( «таблица 1») И получение ответа JSON, как, { «TableA»: [{ «Id» : 34562, «идентификатор»: 2, «Имя»: «ZDR»}]}, где поле «ID» и «идентификатор» объявлены как «ИНТ» в базе данных Теперь мне нужно эти значения также должны быть отображены в два раза цитаты, есть ли способ, которым мы можем обращаться в SQL сервере 2016 года сам, чтобы очистить все значения полей независимо от типа данных должны быть заключены в двойных кавычках, пожалуйста, нужно полный !!!Как выше одного IAM запроса усадив 12 тетрадей в хранимую процедуре в конце концов, когда я запустить хранимую процедуру я получу ответ JSON, где все значения должны быть заключены в двойных кавычках.
Sakthignanavel
1

голосов
0

ответ
62

Просмотры

Azure поток Analytics передачи переменных во времени

Поток аналитик приема сообщений от нескольких устройств через концентратор IoT о температуре устройства. Я хочу использовать потоковые аналитику для получения средней температуры по всем устройствам. Я не могу использовать LAG, потому что я не знаю, когда устройство будет посылать информацию, и если одно устройство не посылает сообщение на некоторое время я все еще хочу, чтобы объяснить свою температуру в среднем. UDA работает над окном времени и учет всех устройств, у меня будет использовать очень большое окно, которое я чувствую, буду деградировать скорость обработки SA, если будет сотни тысяч сообщений в каждом окне. Есть ли функциональность SA, которая позволит мне создать таблицу, которая будет настойчив над сообщениями и могут быть изменены динамически (я знаю опорного входного хранения больших двоичных объектов, но это «холодный»
Evgeniy Vasilev
1

голосов
1

ответ
489

Просмотры

SQL Server : permissions to only allow execute on some stored procedures

Я предварить это с Я никогда не был ответственным за безопасность базы данных и все это действительно ново для меня, так что простите за вопрос, если это плохо - я буду стараться, чтобы обеспечить как можно больше информации, как это возможно. Я искал вокруг без особых деталей на мой конкретный вопрос. Я использую базу данных SQL Server 2008 R2 и я нуждается в способности ограничить все пользователи домена, чтобы иметь возможность выполнять только определенные хранимые процедуры, когда четко определены. Как и в, ЗАПРЕТИТЬ выберите / обновление / удаление / и т.д. на всех таблиц / просмотров / хранимых процедур базы данных, для некоторых хранимых процедур, где введён явно, за исключением (грант на выполнение хранимой процедуры USER (пользователи домена ниже)). Я думал, что это будет довольно легко с ролями сервера, но он появляется пользовательские роли сервера доступны только в SQL Server 2012 и выше и общественная роль сервера гранты выберите доступ на все мои таблицы. Я читал, что отрицать всегда превалирует над грантом так настроить I роль базы данных, которая имеет выбор доступа набор для отказа, но пользователи по-прежнему могут запрашивать таблицы. Вот моя текущая настройка на 1 сервер, который содержит 2 базы данных: Уровень сервера: Логины: [Domain Users] - AD Войти группы, так что все пользователи могут подключаться к серверу. Имеет роль сервера Public. Уровень базы данных пользователей: [Пользователи домена] - AD группы, поэтому все пользователи могут подключаться к базе данных. Роли базы данных: [SP_Reader] - [Пользователи домена] в качестве члена роли. Защищаемый я все таблицы, установить, чтобы запретить доступ на выборе и мои хранимые процедуры, которые я хочу пользователей выполнять набор, чтобы предоставить на выполнение. Проблема заключается в том пользователи все еще в состоянии выбрать из моих таблиц, если разрешения не существует. Любая идея, что я делаю неправильно здесь?
gbeaven
1

голосов
1

ответ
45

Просмотры

Почему UDF вызов выполняется перед пунктом WHERE в КТР?

Я пытаюсь понять, почему CTE (Common табличного выражения) с UDF (определенная функция пользователя) вызов так медленно. Таблица TABLE1 имеет 10 миллионов строк. В прошлом, где положение (ROWN = 1) является фильтрация и возвращение только 10 записей. Для неизвестной причины, MYFUNCTION называется миллион раз (до ИНЕКЕ фильтра), и это замедляет запрос. Если MYFUNCTION вызова удаляется, запрос выполняется мгновенно. Как я могу заставить SQL запустить MYFUNCTION только после того, как условие WHERE применяется? С MAINDATA AS (SELECT поле1, Field2, field3, ROW_NUMBER (НАД) (PARTITION BY Field5 ORDER BY FIELD6) AS ROWN ИЗ TABLE1) Выбрать FIELD1, dbo.MYFUNCTION (Field2, field3) AS FUNCTIONRESULT ОТ MAINDATA ГДЕ ROWN = 1
Zanoni
1

голосов
2

ответ
57

Просмотры

Создание динамического SQL для большого количества колонок

Я пытаюсь выяснить различия между двумя таблицами (IAM и IAM_audit) для последнего изменения для многих audit_fields (около 20). Я просто показываю два audit_fields здесь. Если я использую курсоры, это медленно. Вот пример двух столбцов. Пожалуйста, помогите мне о том, как создать один динамический запрос вместо того, чтобы давать результаты вместе? Большое спасибо! Создание таблицы: создание таблицы #Iam (Accnum INT, INT, invnumber имя VARCHAR (10), Ac_status VARCHAR (10)) вставить в #Iam (Accnum, invnumber, имя, Ac_status) значения (120, 131, 'ABC', ' A '), (121, 132, 'защиту', 'C') создать таблицу #Iam_audit (accnum INT, INT, invnumber audit_field VARCHAR (10), field_after VARCHAR (10), MODIFIED_DATE DateTime) вставить в #Iam_audit (accnum, invnumber, audit_field, field_after,
suki
1

голосов
1

ответ
37

Просмотры

SQL Server : syntax issue with overlapping dates

I'm having issues with a select that I can't seem to wrap my head around. I have web front end that has a business rule where date ranges cannot overlap and I need to identify them and remove those records before I import so that our BU and handle them manually. I have 3 columns Dealer_Number, Date_From and Date_To. For example you see that I have 2 data ranges of: 11/01/2017 to 11/30/2017 and 11/01/2017 to NULL which technically they overlap. I also have instances where I have the below date ranges which also overlap that I need to identify and remove: 05/02/2017 to 07/16/2017 03/05/2017 to 08/03/2017 I started with the below and I've tried using between etc but can't get it to return what I'm expecting: SELECT dealer_number, Date_From, Date_To FROM [MyTable] WHERE dealer_number = 'HD0421' GROUP BY dealer_number, Date_To, Date_From HAVING COUNT (Date_From) > 1 ORDER BY dealer_number ASC DDL CREATE TABLE #tmp ( Dealer_Number [NVARCHAR](255) NULL, Date_From DATETIME NULL, Date_To DATETIME NULL ) INSERT INTO #tmp VALUES ('HD0421', '11/01/2017', '11/30/2017'), ('HD0421', '11/01/2017', '11/30/2017'), ('HD0421', '11/01/2017', '11/30/2017'), ('HD0421', '11/01/2017', '11/30/2017'), ('HD0421', '11/01/2017', NULL), ('HD0421', '11/01/2017', NULL), ('HD0421', '11/01/2017', NULL), ('HD0421', '11/01/2017', NULL), ('HD0421', '12/01/2017', '01/25/2018'), ('DRE456', '05/12/2017', '11/12/2017') , ('DRE456', '11/13/2017', '12/12/2017'), ('DRE456', '01/12/2017', '06/12/2017'), ('DRE456', '05/12/2017', '11/12/2017'); Any assistance is greatly appreciated!
PeteMiller
1

голосов
0

ответ
309

Просмотры

Как экспортировать и импортировать базу данных для SQL Server 2017 на Linux?

Linux Mint 18,3 x64 Microsoft SQL Server 2017 Developer Edition (64-разрядная версия) на документации Linux Microsoft содержит соответствующую информацию для SQL Server установлен на Windows, но мой экземпляр SQL Server 2017 установлен на Linux. Как экспортировать и импортировать базу данных для SQL Server 2017 на Linux? Можно ли сделать через Sqlcmd или JetBrains DataGrip или другим способом? Это очень интересно для меня, как сделать это с помощью скрипта.
Andrey Bushman
1

голосов
0

ответ
128

Просмотры

Extimated план выполнения вызывает ошибку с «вставить» - в то время как «выберите в» порядке. Это почему?

У меня есть эти два szenarios (сильно упрощены). - При выполнении (F5) все в порядке. - При показе предполагаемого плана выполнения (Ctrl-L) есть ошибка: «Неверное имя объекта„# t1“.» Есть ли способ, чтобы использовать первый Szenario (выбрать в) и еще в состоянии «Ctrl-L» и «F5» код? Что-то вроде «отсроченной проверки» в SSIS? --first Szenario: выберите в случае object_id ( 'Tempdb .. # t1') является нулевой начать выберите 1 c1 в # t1; выберите * от # t1; падение таблицы # t1; конец --second Szenario: вставить, если object_id ( 'Tempdb .. # t2') является нулевым начать создавать таблицы # t2 (c1 INT); вставить # t2 выберите 2; выберите * от # t2; падение таблицы # t2; конец
Christian4145
1

голосов
1

ответ
198

Просмотры

How do I use COLLATE based on a function in T-SQL? [duplicate]

Этот вопрос уже есть ответ здесь: СОРТ в UDF не работает, как ожидается, 8 ответов у меня есть следующие функции для настройки СОРТИРОВКИ для @p столбца на основе @c параметра. Я был вдохновлен этим ответом. CREATE FUNCTION [DBO]. [FnsConvert] (@p NVARCHAR (2000), @c NVARCHAR (2000)) ВОЗВРАТ NVARCHAR (2000) КАК НАЧАТЬ ЕСЛИ (@c = 'SV-SE') SET @p = @p COLLATE Finnish_Swedish_100_CI_AS ELSE SET @p = @p КОПИИ SQL_Latin1_General_CP1_CI_AS RETURN END @p Это, как я использую его: SELECT Название FROM Things ORDER BY dbo.fnsConvert (название, 'SV-SE') Результат: AÅÄBCÖ Ожидаемое: ABCÅÄÖ в попытке отладить Я бегу ЗАЯВЛЯЮ @l NVARCHAR (255) DECLARE @p NVARCHAR (255) ВЫПЛН @l = dbo.fnsConvert @p = Тест, @c = 'SV-SE'; ВЫБРАТЬ @l Это просто возвращает строку Test. Я бы ожидать, что она также содержит заявление СОРТ-, но я очень хорошо может быть неправильно об этом.
1

голосов
3

ответ
33

Просмотры

Как изменить / создать таблицу, которая содержит столбец, который по умолчанию DateTimeOffset будущем в?

Это то, что я пытаюсь в своем коде: ALTER TABLE xTable Добавить xDate [DateTimeOffset] (7) NOT NULL DEFAULT (TODATETIMEOFFSET ( '2020-01-01 00: 00: 00,000', '+00: 00')) Это работает до значения по умолчанию 0001-01-01 00: 00: 00.0000000, а не желаемое значение 2020-01-01 00: 00: 00.000, +00: 00
Vivek kumar
1

голосов
2

ответ
31

Просмотры

SQL Синтаксис Ошибка в функции печати с использованием динамических переменных

Когда я запускаю ниже запрос, он делает печать заявления, но выдает следующее сообщение об ошибке: Процесс не удалась: Неправильный синтаксис около «)» Код: IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = «ДБО» И TABLE_NAME = «Table_1» ) DELETE [DBO]. [Table_1] ГДЕ [UPDATED_DATE]
ProdSupport
1

голосов
2

ответ
2.1k

Просмотры

SQL Error: Conversion failed when converting the varchar value ',' to data type int

Я убегаю голову над этим. Я получаю сообщение об ошибке. Я последовал за решения по другим вопросам, но ничего не работает для меня. Я действительно надеюсь, что кто-то может исправить меня здесь. Все, что я хочу, чтобы получить данные из вида SELECT, FROM Table_view.Information Table_View, но я получаю эту ошибку преобразования не удалось при преобразовании значения VARCHAR «» к типу данных междунар Я попробовал следующее: SELECT, FROM Table_View.Information Table_View WHERE Table_View.Information не так, как '%,%' SELECT Table_View.Information случае, когда CAST (Table_View.Information AS INT) = 1, то 'пространство' ИНАЧЕ CONVERT (VARCHAR, Table_View.Information) КОНЕЦ ИЗ Table_View SELECT CAST (ЗАМЕНЫ (REPLACE (Table_View .Information, '', ' '),'/', '') AS VARCHAR) ОТ Table_View конвертируйте (VARCHAR, Replace (Replace (Table_View.Information, '', ' '),'/', '')) ОТ Table_View ВЫБРАТЬ Table_View.Information случае, когда '%,%' Table_View.Information не так, как затем отливали (Table_View.Information AS VARCHAR ) END FROM Table_View Ничего из вышеперечисленного помогает мне решить эту проблему. Какие-либо предложения? Я попытался бросание, конвертировать, случай, заменить ..
edcoder
1

голосов
2

ответ
82

Просмотры

Как проверить, если определенная строка содержится в массиве, возвращенного JSON_QUERY

Я пытаюсь написать SQL заявление, которое будет анализировать некоторые JSON и возвращать только строки, в которых один из массивов объекта JSON содержит заданное значение. Пример JSON: Объект 1: { "Клавиша1": [ "элемент1", "элемент2", "элемент3"]} Объект 2: { "Клавиша1": [ "элемент1", "элемент3"]} Я хотел бы возвращать только строки где JSON_QUERY (объект, '$ .Key1'). Содержит ( "item2") истинно (в данном примере, объект 1). Конечно, эта волшебная функция «Содержит ()» не существует в TSQL, и я не могу найти никакой документации функции, которая выполняет, как хотелось бы. EDIT: Мое текущее решение (которое я не очень любит, и хотел бы заменить) проверяет, является ли строка символов «item1"»содержится в пределах стоимости возвращенного JSON_QUERY. Мне не нравится это,
1

голосов
1

ответ
30

Просмотры

Можно перебрать список чисел в TSQL?

У меня есть список разделенных запятыми personIDs: 1265, 8632. То, что я хочу сделать, это то, что я хотел бы указать на кусок псевдо-кода, который не работает, конечно. объявить @Max Int = (SELECT COUNT (*) из dbo.tablePersons) -1 объявляет @cnt = 0 BEGIN SELECT, PersonId ОТ dbo.tablePersons ГДЕ (1265, 8632) [@ CNT] НЕ В ВЫБОРЕ PersonId ОТ dbo.tablePersons SET @cnt = @cnt + 1 END Я хочу, чтобы пройти по списку 1265, 8632 и проверить, соответствуют ли идентификаторы в списке не существует в SELECT, FROM PersonId dbo.tablePersons. Цель состоит в том, чтобы найти все эти идентификаторы в моем списке, которые есть в SELECT, FROM PersonId dbo.tablePersons. Учитывая тот факт, что этот псевдо-код не является жизнеспособной -Естью своего рода обходного пути?
AF X
1

голосов
2

ответ
32

Просмотры

Получить предыдущую дату начала fytd и дату окончания, основанную на ггггммдде [закрыто]

Я искал и пробовал различные запросы, но продолжаю застревать. Был бы очень признателен помочь с этим. Может кто-нибудь подскажет, как получить начало предыдущего 2 финансового начала года на основе даты в формате ГГГГММДД? У меня есть ежедневный отчет, в котором, если дата ггггммдд тогда я хотел бы получить последнюю 2 финансового года дата начала. Например, если дата 20180612, то I'ld хотели бы получить от даты 20160701.
batibot
0

голосов
1

ответ
16

Просмотры

Объединить строку с помощью FOR XML PATH

динамична и может иметь различные VALES каждый день. Мой запрос является следующим: выберите [Измерение], [Атрибут], [Значение] = ВЕЩЕСТВО ((SELECT N '', '' + [AttributeValue] ОТ Testy х где [Размер] = х [Размер] и [Атрибут. ] = х. [Атрибут] FOR XML PATH ( ''), тип) .value (N '. [1], N'nvarchar (макс) '), 1, 2, N'') из Testy группы по [ измерение], [Атрибут] Что я делаю неправильно?
Giuseppe Lolli
1

голосов
1

ответ
74

Просмотры

Преобразование из NVARCHAR в десятичную и фильтр по диапазону

Я хотел бы выполнить запрос на следующих строковых значений: Индентификационный / Значение 1 / 10.5 2/12 3/8 4/5 19.25 / 16.4 6/14 В столбце значение представляет собой столбец NVARCHAR. Я хотел бы отфильтровать результаты между двумя значениями строк, вставленных пользователями (например, 10 и 15). Я пытался использовать: Выберите значение из таблицы, где ПРЕОБРАЗОВАНИЯ (десятичное (10, 2), значение) между CONVERT (десятичное (10, 4), '10') и преобразования (в десятичной системе (10, 4), '15') Но у меня есть следующее сообщение об ошибке: Ошибка преобразования типа данных NVARCHAR в числовой. Что случилось с типами данных?
Pame1692
1

голосов
1

ответ
42

Просмотры

Добавление первичных ключей в T-SQL

В T-SQL учебник я видел, что есть два различных способа (по крайней мере) создания или добавления первичного ключа в таблице, причем один из них, сделав изменения на уже существующей таблице (Заказчик): USE Бронирование номера; GO ALTER TABLE dbo.Customer ADD CONSTRAINT PK_Customer PRIMARY KEY CLUSTERED (CustomerId); а другой быть на момент создания самой таблицы Customer: USE RoomReservation; GO CREATE TABLE dbo.Customer (CustomerId INT NOT NULL CONSTRAINT PK_Customer первичный ключ, FirstName NVARCHAR (50) NOT NULL, LastName NVARCHAR (50) NOT NULL); Мой вопрос заключается в следующем: CUSTOMERID и PK_Customer 2 разные названия одного и того же первичного ключа atribute? Являются ли они 2 разные атрибуты, которые являются копиями одного и того же значения? И, как в названии или в стоимостном выражении, что является использование для такого рода избыточности?
Lina Silveira
1

голосов
1

ответ
62

Просмотры

Cannot bound a NOT EXISTS clause in SQL Server

Мне нужна помощь с работой дописывания Я пытаюсь автоматизировать на еженедельной основе. В настоящее время мы имеем два различных баз данных на сайте. Одним из них является для нашей ERP, а другой для нашей системы HMI / SCADA, которые мы строим. Я связал сервера уже и можно запросить из базы данных ERP, чтобы вытащить список деталей; Однако я хочу, чтобы это обновление на еженедельной основе, как мы случайный образом получить новые номера деталей, и я не хочу о ответственности за ногу с любыми новыми номерами деталей или изменениями к ребенку и т.д. Следующий запрос дает мне ожидаемые результаты , за исключением того, когда я запускаю его каждый раз, когда он сбрасывает все части в базу данных SCADA каждый раз: INSERT INTO scada.dbo.Testing (ps_par, ps_comp) ВЫБРАТЬ ps_par, ps_comp оТ OPENQUERY (ERP_QAD, «SELECT ps_par, ps_comp оТ PUB. ps_mstr ') WHERE [ps_par] LIKE '%' PP Поэтому я добавил «НЕ СУЩЕСТВУЕТ», чтобы попробовать и это принесет только в «РР (окрашенные части)», которые не были уже в самой таблице со следующим утверждением: INSERT INTO scada.dbo.Testing (ps_par, ps_comp) ВЫБОР ps_par, ps_comp ОТ OPENQUERY (ERP_QAD, 'SELECT ps_par, ps_comp ОТ PUB.ps_mstr') где [ps_par] LIKE 'PP%' И НЕ СУЩЕСТВУЕТ (SELECT ps_par FROM OPENQUERY (ERP_QAD, 'SELECT ps_par, ps_comp ОТ PUB.ps_mstr' ) WHERE ERP.pub.ps_master.ps_par = scada.dbo.testing.ps_par) Это не удается, и я получаю сообщение об ошибке: Msg 4104, уровень 16, состояние 1, строка 5 из нескольких частей идентификатора «ERP.pub.ps_master. ps_par»не могут быть связаны. Msg 4104, уровень 16, состояние 1, строка 5 из нескольких частей идентификатора "scada.dbo.testing.ps_par" не может быть связан. Любая помощь будет принята с благодарностью. Я не большой в SQL; так что я чувствую, что я близок к ответу, просто не знаю, как писать. Заранее спасибо!
Dave Holt

Просмотр дополнительных вопросов

Связанные вопросы