Size: a a a

2021 April 29

А

Алексей in sql_ninja
merge не лучше будет?
источник

СК

Сергій Кринько... in sql_ninja
Ну заодно и сравнишь
источник

T

Timus in sql_ninja
что значит лучше или правильно?
используется одно или другое или третье в зависимости от ситуации.
источник

СК

Сергій Кринько... in sql_ninja
в мерже условие будет ключу - если нет то инсерт. а если есть то апдейт в любом случае
источник

СК

Сергій Кринько... in sql_ninja
а тебе нужно если поля поменялись
источник

А

Алексей in sql_ninja
полей много в таблице, прописывать каждое в условии update, не очень оптимально как мне кажется
источник

СК

Сергій Кринько... in sql_ninja
Тогда пересмотри условие... Делай мердж и апдейти все и какая разница поменялось значение поля или нет
источник

А

Алексей in sql_ninja
а смысл тратить ресурсы на update, если он не нужен
источник

СК

Сергій Кринько... in sql_ninja
В мерже ты дополнительное условие не укажешь
источник

А

Алексей in sql_ninja
ага, я это уже понял
источник

СК

Сергій Кринько... in sql_ninja
Ну так вот и выбирай
источник

СК

Сергій Кринько... in sql_ninja
Или апдейт в мержде всего
источник

СК

Сергій Кринько... in sql_ninja
Или инсерт и апдейт по условию
источник

T

Timus in sql_ninja
а какое дополнительное условие не укажешь?
источник

СК

Сергій Кринько... in sql_ninja
MERGE table
 USING
 (
  SELECT    
   [KeyId]
  ,[Field1]
  ,[Field2]
  from
   #
 )
 AS source
 (
   [KeyId]
  ,[Field1]
  ,[Field2]
 )  
 ON
       target.[KeyId] = source.[KeyId]
 WHEN MATCHED
 THEN  
  UPDATE  
  SET
     [Field1] = source.[Field1]
    ,[Field2] = source.[Field2]
 WHEN NOT MATCHED
 THEN  
  INSERT
  (
   [KeyId]
  ,[Field1]
  ,[Field2]
  )  
  VALUES
  (
    source.[KeyId]
   ,source.[Field1]
   ,source.[Field2]
  );
источник

СК

Сергій Кринько... in sql_ninja
По условию задачи апдейт нужен был если изменилось одно из полей
источник

T

Timus in sql_ninja
https://docs.microsoft.com/ru-ru/sql/t-sql/statements/merge-transact-sql?view=sql-server-ver15
то есть вот тут  [ WHEN MATCHED [ AND <clause_search_condition> ]   -  AND <clause_search_condition> это не для доп условий?
источник

HN

Hesareal Nowhereman in sql_ninja
всем привет! тут есть кто-то с опытом работы с azure data factory / synapse analytics? есть вопрос как там динамически передавать параметры в SQL запросы
источник

СК

Сергій Кринько... in sql_ninja
Не использовал. Спасибо !
источник

AS

Ann Spaceman in sql_ninja
Привет! У меня есть таблица вида (date, id, rub_amnt, group), где rub_amnt чек пользователя, а группа — это группа пользователя в зависимости от размера чека. Я хочу посчитать, сколько времени в днях потребовалось пользователю чтобы перейти в другую группу. Делаю это через оконную функцию запросом в постгресе
Select date, id, rub_amnt, group, count(date) over (partition by group, I’d order by date) as days_count
Но он считает, сколько всего пользователь провёл дней в той или иной группе, т е если он возвращается в предыдущую группу, то он начинает отсчёт не заново, а как будто он из предыдущей группы и не уходил.
Пробовала ещё через datediff с оконкой внутри, но тоже не сработало. Пробовала через first_value проставлять первый день попадания в функцию и считать разницу, но тоже никак. Подскажите, пожалуйста, как сделать так, чтобы он заново считать начинал
источник