У меня есть строковый столбец в SQL Server, который содержит данные об оплате. Столбец содержит два данных, разделенных запятой, но иногда может содержать только одно. Мне нужно иметь возможность разделить этот единственный столбец на два новых столбца, преобразовать их в деньги и выполнить сумму двух.
Образец столбца оплаты
+---------+
| Payment |
+---------+
| 1000 |
+---------+
| 500, 100|
+---------+
| 10,20 |
+---------+
желаемый результат
+---------+---------+--------+-------+
| Payment | split1 | split2 | total |
+---------+---------+--------+-------+
| 1000 | 1000 | 0 | 1000 |
+---------+---------+--------+-------+
| 500, 100| 500 | 100 | 600 |
+---------+---------+--------+-------+
| 10,20 | 10 | 20 | 30 |
+---------+---------+--------+-------+
Я хотел бы запросить это в одном операторе выбора без использования функции.
Решение
Я сформулировал решение на основе ссылок, предоставленных комментаторами. Поскольку я не хотел использовать курсоры или функции, вот полный оператор выбора, который отвечает на мой вопрос:
SELECT
cast(substring('1000,789',1,CHARINDEX(',', '1000,789')-1) as decimal(10,2)) AS Payment1,
cast(substring('1000,789',CHARINDEX(',', '1000,789')+1,len('1000,789')) as decimal(10,2))
as Payment2,
cast(substring('1000,789',1,CHARINDEX(',', '1000,789')-1) as decimal(10,2)) +
cast(substring('1000,789',CHARINDEX(',', '1000,789')+1,len('1000,789')) as decimal(10,2))
as TotalPayment from payment;