Member 12965461 Ответов: 1

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


Я должен получить значение продаж и торговли из таблицы BplD из столбца Total.
Значение BplD и BplM может быть объединено.
единственное условие-если BplM.Line='LeSales' , то bplD.total value должно быть значением продаж

и если BplM.LeTrade линии='' тогда BplD.общая стоимость должна быть стоимость сделки.

Как это сделать?

Что я уже пробовал:

Выберите BplD.total в качестве продаж,
BplD.общая как торговля
от BplD
внутреннее соединение BplM
на BplD.BplMPkey= BplM.pkey
где BplM.Line='LeSales'

Но это даст только продажную стоимость, а не торговую.
Как получить оба значения?
Пожалуйста помочь

1 Ответов

Рейтинг:
5

OriginalGriff

Попробуй:

...where BplM.Line='LeSales' OR BpIM.Line = 'LeTrade'


Если это не то, что вам нужно, тогда нам нужны примеры ввода и вывода, чтобы точно определить, чего вы пытаетесь достичь.

Кстати: вы понимаете, что столбцы "продажи" и "торговля" вашего вывода извлекаются из одного и того же столбца, поэтому всегда будут содержать одно и то же значение?

Цитата:
Хотя "продажа" и "торговля" столбцы вывода извлекаются из того же столбца, но стоимость идет на основе BplM.Строка='LeSales и BplM.LeTarde Линии=''
А! Итак, вам нужны два столбца, один из которых имеет значение при BplM.Линия-это "продажи", а другая, когда это "торговля"?
Это не сложно, но для этого нужно дело:
SELECT CASE WHEN m.Line='LeSales' THEN d.total ELSE 0 END AS Sales,
       CASE WHEN m.Line='LeTrade' THEN d.total ELSE 0 END AS Trade
FROM BplD d
INNER JOIN BplM m
ON d.BplMPkey = m.pkey
Если у вас есть другие значения в строке, то вам понадобится WHILE с предложением OR.

Но дизайн данных требует некоторой работы: вы дублируете информацию и замедляете обработку. Добавьте третью таблицу под названием TransType с двумя столбцами
ID     INT, IDENTITY
LINE   NVARCHAR

И сделайте столбец Line внешним ключом к этой таблице. Таким образом, вы не можете получить "глупые значения" в вашем столбце строки, что означает, что данные будут пропущены.


Member 12965461

Хотя "продажа" и "торговля" столбцы вывода извлекаются из того же столбца, но стоимость идет на основе BplM.Строка='LeSales и BplM.LeTarde Линии=''

OriginalGriff

Ответ обновлен.

Member 12965461

Спасибо:)

OriginalGriff

Всегда пожалуйста!