SQL запрос Oracle поиск дубликата записей по нескольким полям, можно использовать комбинацию функций GROUP BY и HAVING. Вот пример запроса:
SELECT field1, field2, field3, COUNT(*) AS count
FROM your_table
GROUP BY field1, field2, field3
HAVING COUNT(*) > 1;
В этом sql запросе вы должны заменить «your_table» на имя вашей таблицы, а «field1», «field2» и «field3» на имена полей, по которым вы хотите найти дубликаты.
Вы получите результат, в котором будут показаны значения полей и количество повторений. Только те записи, в которых количество повторений больше 1, будут включены в результат.
Через партиции
Для поиска дубликатов в Oracle можно использовать анализ партиций таблицы. Вот пример sql запроса, который может помочь вам найти дубликаты внутри партиций таблицы:
SELECT column1, column2, ..., columnN
FROM (
SELECT column1, column2, ..., columnN,
COUNT(*) OVER (PARTITION BY column1, column2, ..., columnN) AS duplicate_count
FROM your_table
)
WHERE duplicate_count > 1;
Замените your_table на имя вашей таблицы, а column1, column2, …, columnN на столбцы, по которым вы хотите искать дубликаты. Результатом будет список строк, содержащих дубликаты исходных данных.
Обратите внимание, что этот запрос проверяет дубликаты только в рамках партиций таблицы. Если вы хотите проверить все строки таблицы на дубликаты, вам нужно будет удалить часть (PARTITION BY column1, column2, ..., columnN).
В SpringBoot 2 уже встроена поддержка JUnit Jupiter, что упрощает нам миграцию c Junit4
Для этого нам надо в SpringBoot 2 надо в тестах убрать
Аннотацию @RunWith, заменить import, в которых фигурируют Test и различных Assert для тестов с Junit на Jupiter
Было
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith( SpringRunner.class )
@SpringBootTest
public class ExampleTest{
@Test
public void isTest(){
Assert.assertEquals(1,1)
}
Стало
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest
public class ExampleTest{
@Test
public void isTest(){
assertEquals(1,1)
}
Проверьте какие еще аннотации могут относится к Junit4 и исправьте их на Junit 5
Необходимо организовать запуск скриптов Powershell. Для примера запустим скрипт ps1, в котором получаем результат работы другого скрипта ps1 и работаем с этим значением.
Напишем первый скрипт, который будет что то возвращать, например json значение какого либо ключа
Теперь напишем скрипт, который запустить первый скрипт получит значение и выведет его на экран
CheckValue.ps1
$GetValue = & "$PSScriptRoot\GetSomeValue.ps1"
If ($GetValue -eq "Ice") {
write-Host "Success Value is " $GetValue
}Else
{
write-Host "Failed Value is " $GetValue
}
Необходимо заменить название имени столбца на значение из переменной. То есть брать название столбца из переменной. В Ms SQL это можно сделать достаточно просто через exec().
Итак стандартный запрос
SELECT '001' AS [CODLIS]
, DATAVAL
, stuff(tbl.COD, 10, 2, 'DL') AS CODART
, tbl.DL AS PR
FROM
tbl
WHERE
tbl.DL > 0
Как видно текст DL встречается аж в 3 местах. Вот его нам надо заменить на свою переменную, чтобы меняя только значение переменной менять и имя колонки и текст в функции stuff.
Делается это так.
Создаём 2 переменные. В одной будет имя колонки, в другой сам запрос.
DECLARE @str varchar(3000),@nameCol varchar(2);
Устанавливаем значения. Не забываем про двойной апостроф
Set @nameCol = 'DL'
Set @str = 'SELECT ''001'' AS [CODLIS]
, ''03.28.2015 0:00:00'' AS DATAVAL
, stuff(tbl.COD, 10, 2, '''+@nameCol+''') AS CODART
, '+@nameCol+' AS PR
FROM
tbl
WHERE
'+@nameCol+' > 0'
Теперь запускаем наш запрос используя exec()
exec(@str)
Вот собственно и все, меняя значение переменной @nameCol меняем и сам запрос и имена столбцов.