Объединить данные из двух таблиц в одну запись в 1 таблице - PullRequest
0 голосов
/ 05 марта 2019

Утро всем

Я надеюсь, что вы можете помочь. Мне удалось добиться этого в Access, но, похоже, не удается в SQL.

Что у меня сейчас работает

В Access я создал 1 БД с 2 таблицами:

  • Имя БД «ВСЕ портфели - итоговые значения»
  • Имена столбцов: идентификатор, дата-значения, external_ref, имя-портфолио, значение
  • Имя БД 'VAL_File_Concatenate'
  • Имена столбцов: value_date, external_ref, wrapper_name, model, value

Как это работает в Access - текстовый файл импортируется в VAL_File_Concatenate, затем выполняется следующий код:

INSERT INTO [All Portfolios - Total Values] ( value_date, external_ref, portfolio_name, [value] ) IN 'PATH TO DB'

SELECT [Val_File_Concatenate].value_date, [Val_File_Concatenate].external_ref, [Val_File_Concatenate] [Wrapper_Name] & " - " & [Model] AS portfolio_name, Sum([Val_File_Concatenate].value) AS SumOfvalue
FROM [Val_File_Concatenate]

GROUP BY [Val_File_Concatenate].value_date, [Val_File_Concatenate].external_ref, [Wrapper_Name] & " - " & [Model]

HAVING ((([Val_File_Concatenate].value_date) Is Not Null));

Это копирует значения из VAL_File_Concatenate в соответствующие поля в All_Portfolios - итоговые значения, но объединяет Wrapper_Name и Model в поле Portfolio_Name в таблице Все портфели - итоговые значения с '-' в качестве разделителя.

Для справки VAL_File_Concatenate выглядит следующим образом:

Value_Date     External_Ref       Wrapper_Name       Model         Value
2019-03-01      Xxxxxxx/x          GIA - Cash       Liquidity      0.165

Выходные данные в базе данных ALL Portfolio - Total Values:

Value_Date     External_Ref      Portfolio_Name            Value
2019-03-01      Xxxxxxx/x       GIA – Cash - Liquidity     0.165

Чего я пытаюсь достичь

Я перенес базы данных в SQL Server 2008, одну БД с 2 таблицами. То, с чем я борюсь, это часть запроса, которая создает имя_портфеля во всех портфелях - итоговые значения путем объединения полей Wrapper_Name и Model в VAL_File_Concatenate.

Спасибо заранее за любую помощь, которую вы можете оказать. Я пробовал разные методы, но, похоже, не могу обойти ошибки.

Mike

Ответы [ 3 ]

0 голосов
/ 05 марта 2019

на сервере sql вы можете использовать + вместо &

    INSERT INTO [All Portfolios - Total Values] ( value_date, external_ref, portfolio_name, [value] ) IN 'PATH TO DB'

    SELECT [Val_File_Concatenate].value_date
        , [Val_File_Concatenate].external_ref
        , [Val_File_Concatenate].[Wrapper_Name] + ' - ' + [Model] AS portfolio_name
        , Sum([Val_File_Concatenate].value) AS SumOfvalue
    FROM [Val_File_Concatenate]

    GROUP BY [Val_File_Concatenate].value_date, [Val_File_Concatenate].external_ref, [Wrapper_Name] + " - " +  [Model]

    HAVING ((([Val_File_Concatenate].value_date) Is Not Null));
0 голосов
/ 06 марта 2019

Вы можете попробовать это.

INSERT INTO [All Portfolios - Total Values] ( value_date, external_ref, portfolio_name, [value] ) 
SELECT 
    [Val_File_Concatenate].value_date, 
    [Val_File_Concatenate].external_ref,
    [Val_File_Concatenate].[Wrapper_Name] + ' - ' + [Val_File_Concatenate].[Model] AS portfolio_name, 
    Sum([Val_File_Concatenate].value) AS SumOfvalue
FROM 
    [Val_File_Concatenate]
WHERE 
    [Val_File_Concatenate].value_date Is Not Null
GROUP BY 
    [Val_File_Concatenate].value_date, 
    [Val_File_Concatenate].external_ref, 
    [Val_File_Concatenate].[Wrapper_Name] + ' - ' + [Val_File_Concatenate].[Model] 
0 голосов
/ 05 марта 2019

В стандартном SQL запрос будет выглядеть примерно так:

INSERT INTO <path to db>.[All Portfolios - Total Values] ( value_date, external_ref, portfolio_name, value )
    SELECT c.value_date, 
           c.external_ref,
           CONCAT(c.[Wrapper_Name], '-', [Model]) AS portfolio_name,
            Sum(c.value) AS SumOfvalue
    FROM Val_File_Concatenate c
    WHERE c.value_date Is Not Null
    GROUP BY c.value_date, c.external_ref, CONCAT(c.[Wrapper_Name], '-', [Model]);

MS Access использует нестандартный синтаксис.Ваш окончательный запрос должен выглядеть примерно так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...