2014-11-27 3 views
0

Я бегу ниже запрос через MS Query на соединение ODBC:SQL Query возвращает запятая разделенные данные

SELECT oa_cstexpbal_0.costcentre, oa_cstexpbal_0.expensecode, oa_cstexpbal_0.yearno, 
oa_cstexpbal_0.baltype, oa_cstexpbal_0.openbal, oa_cstexpbal_0.periodbal 
FROM OPENACC.PUB.oa_cstexpbal oa_cstexpbal_0 
WHERE (oa_cstexpbal_0.yearno='2016') AND (oa_cstexpbal_0.baltype='AV') 

и возвращает следующие данные в один столбец для periodbal:

406186.06;317084.39;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 

ли есть способ, которым я могу выделить данные периода, чтобы остановить его, как разделение запятой?

Я подключаюсь к вызову DEN OPENACC.PUB sql 2008 и используя оригинальный запрос, чтобы вытащить данные. Единственный столбец, который перенастраивается с ;, является периодом. при сбрасывании в excel это может быть исправлено с помощью Text To Columns, но в идеале я хочу попробовать и сделать это в запросе (если это возможно).

+1

Это должно быть, как столбец в базе данных, MySQL не добавляет запятые, если они не были там. – Barmar

+2

Кстати, это не запятые, они точки с запятой. comma = ',', semicolon = ';'. – Barmar

+1

Почему мы все-таки говорим о MySQL? – Strawberry

ответ

0

Предполагая, что вы используете MS SQL Server, вы хотите разделить данные, разделенные точкой с запятой в столбце, на строки, чтобы вы обрабатывали их в SQL.

Если это правильно, вам необходимо разделить их. Поскольку SQL-сервер не может сделать это по умолчанию, у вас есть другой способ сделать это.

См. Это сообщение http://sqlperformance.com/2012/07/t-sql-queries/split-strings для некоторых общих сведенийe.

Здесь https://codereview.stackexchange.com/questions/15125/sql-server-split-function-optimized Я отправил однажды функцию разделения, которая также работает в SQL.

Так один подход может быть:

SELECT oa_cstexpbal_0.costcentre 
    , oa_cstexpbal_0.expensecode 
    , oa_cstexpbal_0.yearno 
    , oa_cstexpbal_0.baltype 
    , oa_cstexpbal_0.openbal 
    , oa_cstexpbal_0.periodbal 
    , s.value AS periodbal_as_rows 
FROM OPENACC.PUB.oa_cstexpbal oa_cstexpbal_0 
CROSS APPLY dbo.fn_Split(oa_cstexpbal_0.periodbal,';') AS s 
WHERE (oa_cstexpbal_0.yearno='2016') AND (oa_cstexpbal_0.baltype='AV') 
+0

спасибо за это YvesR. Можно ли это сделать через запрос MS через excel? – PIPRON79

+0

Хорошо, если вы зарегистрируете функцию в своей базе данных SQL, вы можете запросить ее и в Excel. Если поставщик ODBC создает какие-либо проблемы, настройте запрос (CREATE QUERY ...) и используйте его. – YvesR

+0

Спасибо за вашу помощь ... отлично! – PIPRON79

Смежные вопросы