Вы можете просто сделать:
SELECT P.LegacyKey, MAX(D.DesignNumber) as DesignNumber
FROM tbl1 AS [SO]
GROUP BY P.LegacyKey
HAVING COUNT(DISTINCT D.DesignNumber) = 1;
ORDER BY LegacyKey;
Никаких подзапросов не требуется.
Вот способ использовать grep:
(IFS=
причинысуть здесь - то, что
IFS= причины
"${MY_ARR[*]}"
для расширения с новыми строками, разделяющими объекты, таким образом, это может быть передано по каналу через grep., В частности, это обработает пробелы, встроенные в объектах массива.
\n'"${MY_ARR[*]}"
для расширения с новыми строками, разделяющими объекты, таким образом, это может быть передано по каналу через grep., В частности, это обработает пробелы, встроенные в объектах массива.
\n' && echo "${MY_ARR[*]}") | grep '[^.]*.pattern/[^.]*.txt'
суть здесь - то, что IFS= причины
"${MY_ARR[*]}"
для расширения с новыми строками, разделяющими объекты, таким образом, это может быть передано по каналу через grep.
, В частности, это обработает пробелы, встроенные в объектах массива.
\n' причины"${MY_ARR[*]}"
для расширения с новыми строками, разделяющими объекты, таким образом, это может быть передано по каналу через grep. , В частности, это обработает пробелы, встроенные в объектах массива.
Вы можете сделать это:
Удалить все вхождения подстроки.
# Not specifing a replacement defaults to 'delete' ...
echo ${x[@]//pref*/} # one two three four ve ve
# ^^ # Applied to all elements of the array.
Редактировать:
Для пробелов это примерно то же самое
x="preffoo bar foo prefbaz baz prefbar"
echo ${x[@]//pref*/}
Вывод:
bar foo baz
Еще один способ разделить плоскую строку — преобразовать ее в массив, а затем использовать метод массива:
x="preffoo bar foo prefbaz baz prefbar"
x=($x)
x=${x[@]//pref*}
Сравните это с началом и окончанием массива:
x=(preffoo bar foo prefbaz baz prefbar)
x=(${x[@]//pref*})