2012-01-23 2 views
1

Я пишу отчет о марже в нашей Главной книге, и у меня есть основы работы, но мне нужно объединить строки на основе конкретной логики, и я не знаю, как ...Как объединить строки данных SQL на основе столбцов?

Мои данные выглядят как это:

value1  value2  location date   category      debitamount creditamount 
2029  390   ACT  2012-07-29 COSTS - Widgets and Gadgets 0.000   3.385 
3029  390   ACT  2012-07-24 SALES - Widgets and Gadgets 1.170   0.000 

и мой отчет должен отображать две колонки вместе таким образом:

plant date   category    debitamount creditamount 
ACT  2012-07-29 Widgets and Gadgets 1.170   3.385 

логика присоединиться к ним содержится в значению1 и значение 2 столбца. Если последние 3 цифры значения 1 и все три цифры значения 2 совпадают, строки должны быть объединены. Кроме того, 1-я цифра значения 1 всегда будет равна 2 для продаж и 3 для затрат (не уверены, если это имеет значение)

IE 2029-390 - это деньги для виджетами и гаджетами, проданными клиентам, а 3029-390 - деньги, потраченные на покупку виджетами и гаджетами у поставщиков.

Как я могу это сделать программно в моей хранимой процедуре? (SQL Server 2008 R2)

Редактировать: Могу ли я загрузить 3000-х в одну таблицу переменных и 2000-х в другую, а затем присоединиться к двум по значению2 и справа (значение1, 3)? Или что-то типа того?

ответ

1

Попробуйте это:

ВЫБОР RIGHT (LTRIM (RTRIM (value1)), 3), значение2, MAX (место нахождения), MAX (дата), MAX (категория), SUM (debitamount), сУММА (creditamount) ОТ table1 GROUP BY RIGHT (LTRIM (RTRIM (значение1)), 3), значение2

Это будет подвести сумму кредита и сумму дебета. Он выберет максимальное строковое значение в других столбцах, считая, что они всегда одинаковы, когда значение2 и последние 3 цифры значения1 одинаковы, это не имеет значения.

+0

Пожалуйста, отметьте это как правильное, если это поможет. Дайте мне знать, если у вас есть вопросы, и я буду предлагать отзывы. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

Спасибо за вашу помощь, я честно не знал, что могу использовать MAX() вот так. В итоге я загрузил 3000 и 2000 в свои собственные переменные таблицы, а затем объединил их с помощью вашего метода. Работал как шарм. Благодаря!!! – bluehiro

+0

Я предполагаю, что единственным вопросом, который я мог бы добавить, было бы так: Как я могу сделать столбец Category всегда выбирать «Sales - Widget and Gadgets» вместо того, чтобы выбирать COSTS иногда и в других случаях SALES. Данные отчета точны, но первые 7 символов имен категорий иногда вводят в заблуждение. – bluehiro