Как объединить строки данных SQL в логике на основе столбцов? - PullRequest
1 голос
/ 24 января 2012

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 24 января 2012

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

ВЫБРАТЬ ПРАВО (LTRIM (RTRIM (значение1)), 3), значение2, МАКС (местоположение), МАКС (дата), МАКС (категория), СУММА (дебитование суммы), SUM (creditamount) FROM table1 GROUP BY RIGHT (LTRIM (RTRIM (value1)), 3), значение2

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

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