это может быть очень трудно получить. Если вы ДОЛЖНЫ сделать это в запросе, а не в функции, проблема, с которой вы столкнетесь, - это предел количества строк, которые вы можете объединить в один столбец. Пока единственный способ, который я нашел для этого, - через инструкции iif.
SELECT
test1.ColumnA AS ColumnA,
First([test1].[ColumnB]) & IIf(Count([test1].[ColumnB])>1,"," & Last([test1].[ColumnB])) AS ColumnB
FROM test1
GROUP BY test1.ColumnA;
возвращает:
ColumnA ColumnB
1 abc,xyz
2 efg,hij
3 asd
Это вернет только первое и последнее, но Я уверен, что с небольшой работой вы могли бы выработать функцию «Выбрать», но, как я уже сказал, вам придется добавить несколько инструкций iif для каждого дополнительного элемента, который вы хотите добавить, следовательно, ограничение.
Технически они функционируют то же, если Вы используете SQL Server иначе T-SQL. При использовании его в хранимых процедурах нет никакой причины производительности использовать один по другому. Это затем сводится к персональному предпочтению. Я предпочитаю использовать <>, поскольку это - совместимый ANSI.
Можно найти ссылки на различные стандарты ANSI в...
Я понимаю что синтаксис C !=
находится в SQL Server из-за его наследия Unix (назад в дни SQL Server Sybase, пред Microsoft SQL Server 6.5).
Можно использовать, какой бы ни Вам нравится в T-SQL. В документации говорится, что они оба функционируют тот же путь. Я предпочитаю !=
, потому что это читает "не равный" моему (базирующийся C/C ++/C#), ум, но гуру базы данных, кажется, предпочитает <>
.
Они и допустимы и то же относительно SQL Server,
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation
<>
допустимый SQL согласно стандарту SQL-92.
http://msdn.microsoft.com/en-us/library/aa276846 (SQL.80) .aspx
Стандарт ANSI SQL определяет <>
как "не равняются" оператору,
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (5.2 <token> and <separator>
)
Существует нет !=
оператор согласно ANSI/SQL 92 стандарта.
'<>'
из стандарта SQL-92 и '!='
собственный оператор T-SQL. Это доступно в других базах данных также, но так как это не стандартно, необходимо взять его в зависимости от конкретного случая.
В большинстве случаев Вы будете знать, с какой базой данных Вы соединяетесь так, это не действительно проблема. В худшем случае Вам, возможно, придется сделать поиск и замену в Вашем SQL.
Большая часть поддержки баз данных !=
(популярные языки программирования) и <>
(ANSI).
Базы данных та поддержка оба !=
и <>
:
!=
и <>
!=
и <>
!=
и <>
!=
и <>
!=
и <>
!=
и <>
!=
и <>
!=
и <>
!=
и <>
Базы данных, которые поддерживают оператор стандарта ANSI, исключительно:
! =
, несмотря на то, что он не является ANSI, больше соответствует истинному духу SQL как удобочитаемого языка. Кричит не ровня.
<>
говорит, что для меня это (меньше, больше), что просто странно. Я знаю, что намерение состоит в том, что оно либо меньше, либо больше, чем, следовательно, не равно, но это действительно сложный способ сказать что-то действительно простое.
Мне просто пришлось взять несколько длинных SQL-запросов и с любовью поместить их в XML-файл по целому ряду глупых причин, на которые я не буду вдаваться.
Достаточно сказать, что XML не остановился с <>
вообще, и мне пришлось поменять их на ! =
и проверить себя, прежде чем я разрушился с помощью такелажа.
Похоже, что сами Microsoft предпочитают <>
, а не !=
, о чем свидетельствуют ограничения их таблиц. Лично я предпочитаю использовать !=
, потому что я четко прочитал это как "не равное", но если вы введете [поле1 != поле2]
и сохраните это как ограничение, то при следующем запросе оно будет выглядеть как [поле1 <> поле2]
. Это говорит мне о том, что правильный способ сделать это - <>
.