Я сравниваю 2 таблицы. У одного есть новые данные, а у других - данные прошлых месяцев. Данные поступают ежемесячно, и каждый раз все данные. Нет ПК, и любое поле может измениться. Мне нужно показать, какие поля и их старые значения изменили записи. Это может быть 1 или более полей. Для этого я создал внутренние объединения, где все поля объединяются, кроме 1, а затем в том месте, где я говорю, что старое значение не равно новому значению, и затем я добавляю 2 столбца, которые говорят мне, в каком поле мы смотрим, и что старое значение был. Я делаю этот запрос для каждого поля и объединения результатов так мой финальный стол выглядит следующим образом:Группа по отдельным полям и другим другим
FieldA, FieldB, FieldC, FieldChanged, OldValue
FieldChanged будет иметь имена полей, которые изменили для этой записи и OldValue будет сказать, что было старое значение.
Если в записи было изменено более 1 поля (что есть), то я получаю это поле A-C, дублируемое в результате, с другими значениями FieldChanged и OldValue. Тем не менее, я хочу сделать группу FieldA, FieldB, FieldC и как-то связаться с FieldChanged из всех тех же записей и OldValue из всех тех же записей.
Союз Результат запроса будет выглядеть (первые 3 поля, как новые данные выглядит):
"Tiger", "74", "Masters", "FieldC", "The Masters"
"Tiger", "74", "Masters", "FieldB", "68"
Я хотел бы группа полей 1-3 и CONCAT 2 последних полей в группа:
"Tiger", "74", "Masters", "FieldB,FieldC", "68,The Masters"
Теперь это просто пример, так что это просто и может быть легко сказать, что это новый рекорд, однако моя таблица имеет 12 полей и поэтому, если все совпадает, но 1 поле, скорее всего, это то же самое записи, и они просто обновили одно из полей.
Ключ здесь состоит в том, чтобы группировать по определенным столбцам и конкатрировать другие значения полей из сгруппированных столбцов вместе, чтобы одна и та же запись не повторялась, и у меня есть 1 строка, в которой показано каждое поле, которое было изменено для этой записи, это старые ценности.
Любопытно, почему в материале select statement вы сравниваете только где fielda = fielda? Я предполагаю, что вы должны сделать это для всех полей не только A? Делайте это также для B и C? – user441521
@ user441521 - Поскольку все значения были такими же, я не добавлял их –
Что вы имеете в виду, поскольку все значения были одинаковыми? Если вы имеете в виду в моем маленьком примере (где FieldA всегда «Тигр»), то извините, что существует множество разных значений. Поэтому я предполагаю, что мне нужно будет сравнить все. – user441521