Почему мой код не объединяет таблицу 1 в нижнюю часть таблицы 2?

#sql #sql-server #tsql #merge

Вопрос:

 SELECT * INTO "2020_to_2021_divvy_tripdata"
  FROM
  (MERGE [PortfolioDB].[dbo].['202008-divvy-tripdata

Я хочу, чтобы он взял данные с 202008 года и объединил их с 202007 годом, чтобы одна таблица просто была объединена в нижней части другой, но в ней указан неправильный синтаксис рядом с *. Я перепробовал все свои предыдущие наборы инструментов, такие как изменение комбинаций квадратных скобок и тому подобное.

Обе таблицы отформатированы одинаково, имена столбцов совпадают.

Я попытался эмулировать код отсюда. В конце концов, я объединю несколько месяцев друг с другом, чтобы создать таблицу за полный год.


Комментарии:

1. Я никогда не видел такого кода. Какую базу данных вы используете?

2. @GordonLinoff Я предполагаю, что sqlserver по ссылке в вопросе...

3. вы уверены, что хотите объединить данные или добавить их вместо этого?

4. Пожалуйста, отметьте базу данных. Чтобы вы начали, что происходит, когда вы бежите SELECT @@VERSION ? Обратите внимание, что такой вещи, как "дно" таблицы, не существует. Записи возвращаются в порядке того, что у вас есть в вашем ORDER BY

Ответ №1:

У вас INSERT VALUES() есть две проблемы...

  1. Вы должны вставлять из [202007] (источника), а не из [202008] (места назначения)
  2. Вы не можете использовать [202007].* , вы должны перечислить все столбцы по отдельности

Затем вам нужно OUTPUT предложение MERGE , чтобы сделать его данные доступными для внешнего запроса.


Вот демонстрационная версия: db<>скрипка<>

Вот потенциальная возможность переписать ваше заявление...

 INSERT INTO
  "2020_to_2021_divvy_tripdata"
SELECT
  *
FROM
(
  MERGE [PortfolioDB].[dbo].['202008-divvy-tripdata



] as "202008"
USING [PortfolioDB].[dbo].['202007-divvy-tripdataЯ хочу, чтобы он взял данные с 202008 года и объединил их с 202007 годом, чтобы одна таблица просто была объединена в нижней части другой, но в ней указан неправильный синтаксис рядом с *. Я перепробовал все свои предыдущие наборы инструментов, такие как изменение комбинаций квадратных скобок и тому подобное.

Обе таблицы отформатированы одинаково, имена столбцов совпадают.

Я попытался эмулировать код отсюда. В конце концов, я объединю несколько месяцев друг с другом, чтобы создать таблицу за полный год.

Комментарии:

1. Я никогда не видел такого кода. Какую базу данных вы используете?

2. @GordonLinoff Я предполагаю, что sqlserver по ссылке в вопросе...

3. вы уверены, что хотите объединить данные или добавить их вместо этого?

4. Пожалуйста, отметьте базу данных. Чтобы вы начали, что происходит, когда вы бежите SELECT @@VERSION ? Обратите внимание, что такой вещи, как "дно" таблицы, не существует. Записи возвращаются в порядке того, что у вас есть в вашем ORDER BY

Ответ №1:

У вас INSERT VALUES() есть две проблемы...

  1. Вы должны вставлять из [202007] (источника), а не из [202008] (места назначения)
  2. Вы не можете использовать [202007].* , вы должны перечислить все столбцы по отдельности

Затем вам нужно OUTPUT предложение MERGE , чтобы сделать его данные доступными для внешнего запроса.


Вот демонстрационная версия: db<>скрипка<>

Вот потенциальная возможность переписать ваше заявление...


] as "202007" on [202007].ride_id = [202008].ride_id
WHEN NOT MATCHED THEN
INSERT VALUES ([202008].*)

Я хочу, чтобы он взял данные с 202008 года и объединил их с 202007 годом, чтобы одна таблица просто была объединена в нижней части другой, но в ней указан неправильный синтаксис рядом с *. Я перепробовал все свои предыдущие наборы инструментов, такие как изменение комбинаций квадратных скобок и тому подобное.

Обе таблицы отформатированы одинаково, имена столбцов совпадают.

Я попытался эмулировать код отсюда. В конце концов, я объединю несколько месяцев друг с другом, чтобы создать таблицу за полный год.

Комментарии:

1. Я никогда не видел такого кода. Какую базу данных вы используете?

2. @GordonLinoff Я предполагаю, что sqlserver по ссылке в вопросе...

3. вы уверены, что хотите объединить данные или добавить их вместо этого?

4. Пожалуйста, отметьте базу данных. Чтобы вы начали, что происходит, когда вы бежите SELECT @@VERSION ? Обратите внимание, что такой вещи, как "дно" таблицы, не существует. Записи возвращаются в порядке того, что у вас есть в вашем ORDER BY

Ответ №1:

У вас INSERT VALUES() есть две проблемы...

  1. Вы должны вставлять из [202007] (источника), а не из [202008] (места назначения)
  2. Вы не можете использовать [202007].* , вы должны перечислить все столбцы по отдельности

Затем вам нужно OUTPUT предложение MERGE , чтобы сделать его данные доступными для внешнего запроса.


Вот демонстрационная версия: db<>скрипка<>

Вот потенциальная возможность переписать ваше заявление...


] as "202008"
USING [PortfolioDB].[dbo].['202007-divvy-tripdata

] as "202008"
USING [PortfolioDB].[dbo].['202007-divvy-tripdataЯ хочу, чтобы он взял данные с 202008 года и объединил их с 202007 годом, чтобы одна таблица просто была объединена в нижней части другой, но в ней указан неправильный синтаксис рядом с *. Я перепробовал все свои предыдущие наборы инструментов, такие как изменение комбинаций квадратных скобок и тому подобное.

Обе таблицы отформатированы одинаково, имена столбцов совпадают.

Я попытался эмулировать код отсюда. В конце концов, я объединю несколько месяцев друг с другом, чтобы создать таблицу за полный год.

Комментарии:

1. Я никогда не видел такого кода. Какую базу данных вы используете?

2. @GordonLinoff Я предполагаю, что sqlserver по ссылке в вопросе...

3. вы уверены, что хотите объединить данные или добавить их вместо этого?

4. Пожалуйста, отметьте базу данных. Чтобы вы начали, что происходит, когда вы бежите SELECT @@VERSION ? Обратите внимание, что такой вещи, как "дно" таблицы, не существует. Записи возвращаются в порядке того, что у вас есть в вашем ORDER BY

Ответ №1:

У вас INSERT VALUES() есть две проблемы...

  1. Вы должны вставлять из [202007] (источника), а не из [202008] (места назначения)
  2. Вы не можете использовать [202007].* , вы должны перечислить все столбцы по отдельности

Затем вам нужно OUTPUT предложение MERGE , чтобы сделать его данные доступными для внешнего запроса.


Вот демонстрационная версия: db<>скрипка<>

Вот потенциальная возможность переписать ваше заявление...


] as "202007" on [202007].ride_id = [202008].ride_id
WHEN NOT MATCHED THEN
INSERT VALUES ([202008].*)

Я хочу, чтобы он взял данные с 202008 года и объединил их с 202007 годом, чтобы одна таблица просто была объединена в нижней части другой, но в ней указан неправильный синтаксис рядом с *. Я перепробовал все свои предыдущие наборы инструментов, такие как изменение комбинаций квадратных скобок и тому подобное.

Обе таблицы отформатированы одинаково, имена столбцов совпадают.

Я попытался эмулировать код отсюда. В конце концов, я объединю несколько месяцев друг с другом, чтобы создать таблицу за полный год.

Комментарии:

1. Я никогда не видел такого кода. Какую базу данных вы используете?

2. @GordonLinoff Я предполагаю, что sqlserver по ссылке в вопросе…

3. вы уверены, что хотите объединить данные или добавить их вместо этого?

4. Пожалуйста, отметьте базу данных. Чтобы вы начали, что происходит, когда вы бежите SELECT @@VERSION ? Обратите внимание, что такой вещи, как «дно» таблицы, не существует. Записи возвращаются в порядке того, что у вас есть в вашем ORDER BY

Ответ №1:

У вас INSERT VALUES() есть две проблемы…

  1. Вы должны вставлять из [202007] (источника), а не из [202008] (места назначения)
  2. Вы не можете использовать [202007].* , вы должны перечислить все столбцы по отдельности

Затем вам нужно OUTPUT предложение MERGE , чтобы сделать его данные доступными для внешнего запроса.


Вот демонстрационная версия: db<>скрипка<>

Вот потенциальная возможность переписать ваше заявление…


] as «202007»
ON [202007].ride_id = [202008].ride_id
WHEN NOT MATCHED THEN
INSERT VALUES ([202007].x, [202007].y, [202007].z)
OUTPUT
inserted.*
)
merge_inserted

] as «202008»
USING [PortfolioDB].[dbo].[‘202007-divvy-tripdataЯ хочу, чтобы он взял данные с 202008 года и объединил их с 202007 годом, чтобы одна таблица просто была объединена в нижней части другой, но в ней указан неправильный синтаксис рядом с *. Я перепробовал все свои предыдущие наборы инструментов, такие как изменение комбинаций квадратных скобок и тому подобное.

Обе таблицы отформатированы одинаково, имена столбцов совпадают.

Я попытался эмулировать код отсюда. В конце концов, я объединю несколько месяцев друг с другом, чтобы создать таблицу за полный год.

Комментарии:

1. Я никогда не видел такого кода. Какую базу данных вы используете?

2. @GordonLinoff Я предполагаю, что sqlserver по ссылке в вопросе…

3. вы уверены, что хотите объединить данные или добавить их вместо этого?

4. Пожалуйста, отметьте базу данных. Чтобы вы начали, что происходит, когда вы бежите SELECT @@VERSION ? Обратите внимание, что такой вещи, как «дно» таблицы, не существует. Записи возвращаются в порядке того, что у вас есть в вашем ORDER BY

Ответ №1:

У вас INSERT VALUES() есть две проблемы…

  1. Вы должны вставлять из [202007] (источника), а не из [202008] (места назначения)
  2. Вы не можете использовать [202007].* , вы должны перечислить все столбцы по отдельности

Затем вам нужно OUTPUT предложение MERGE , чтобы сделать его данные доступными для внешнего запроса.


Вот демонстрационная версия: db<>скрипка<>

Вот потенциальная возможность переписать ваше заявление…


] as «202007» on [202007].ride_id = [202008].ride_id
WHEN NOT MATCHED THEN
INSERT VALUES ([202008].*)

Я хочу, чтобы он взял данные с 202008 года и объединил их с 202007 годом, чтобы одна таблица просто была объединена в нижней части другой, но в ней указан неправильный синтаксис рядом с *. Я перепробовал все свои предыдущие наборы инструментов, такие как изменение комбинаций квадратных скобок и тому подобное.

Обе таблицы отформатированы одинаково, имена столбцов совпадают.

Я попытался эмулировать код отсюда. В конце концов, я объединю несколько месяцев друг с другом, чтобы создать таблицу за полный год.

Комментарии:

1. Я никогда не видел такого кода. Какую базу данных вы используете?

2. @GordonLinoff Я предполагаю, что sqlserver по ссылке в вопросе…

3. вы уверены, что хотите объединить данные или добавить их вместо этого?

4. Пожалуйста, отметьте базу данных. Чтобы вы начали, что происходит, когда вы бежите SELECT @@VERSION ? Обратите внимание, что такой вещи, как «дно» таблицы, не существует. Записи возвращаются в порядке того, что у вас есть в вашем ORDER BY

Ответ №1:

У вас INSERT VALUES() есть две проблемы…

  1. Вы должны вставлять из [202007] (источника), а не из [202008] (места назначения)
  2. Вы не можете использовать [202007].* , вы должны перечислить все столбцы по отдельности

Затем вам нужно OUTPUT предложение MERGE , чтобы сделать его данные доступными для внешнего запроса.


Вот демонстрационная версия: db<>скрипка<>

Вот потенциальная возможность переписать ваше заявление…