Я хотел бы получить запрос, который использует большее из двух значений/столбцов, если для другого значения для этого значения истинно.Выберите случай, сравнивающий два столбца
Я пытаюсь получить учетные записи в отчете. К сожалению, БД обычно хранит стоимость наличных денег в столбце HoldingQty
, тогда как для каждого другого типа холдинга (акции, облигации, паевые инвестиционные фонды) он хранит его в столбце Qty
.
Проблема заключается в том, что иногда стоимость наличных денег сохраняется только в Qty
, а иногда и в Qty
и HoldingQty
. Очевидно, что иногда он сохраняется только в HoldingQty
, как упоминалось выше.
В принципе, я хочу, чтобы мой оператор select сказал: «Если безопасность - это деньги, посмотрите на qty и удерживайте qty и дайте мне значение того, что больше. В противном случае, если безопасность не является наличными, просто дайте мне qty», ,
Как бы написать это в T-SQL? Вот мое усилие:
SELECT
h.account_name, h.security_name, h.security_type, h.price,
(CASE:
WHEN security_type = 'cash'
THEN (WHEN h.qty > h.holdingqty
THEN h.qty
ELSE h.holdingqty)
ELSE qty) as quantity,
h.total_value
FROM
holdings h
WHERE
...........
вы почти там с синтаксисом, за исключением. –
Использовать составной регистр case 'case when security_Type = 'cash' и h.qty <= h.holdingqty then h.holdingqty else h.qty end как количество' это в основном говорит, когда тип - это деньги, а holdqty -> или равно qty использовать holdqty, иначе используйте qty. поскольку мы знаем, что это не деньги, мы всегда используем qty, я немного изменил порядок, чтобы упростить оператор case. – xQbert
Будьте осторожны, если эти столбцы имеют значение NULL. – shawnt00