2015-10-02 4 views
-1

У меня есть таблица Tb1, содержащая некоторые столбцы, такие как: OTI и SumOfTb.sql если существует, то выполните некоторые вычисления

Существует еще Tb2, содержащий колоссы: Id и Date.

Связь между этими таблицами является Tb1.OTI = Tb2.Id

То, что я хочу добиться:

если Date (от Tb2) существует =>myResult = SumOfTb

если Date (от Tb2) не существует =>myResult = 0

Очевидно, что не все записи от Tb1 имеют соответствие в Tb2

Как я могу это достичь?

+3

которые вы используете, и можете ли вы предоставить некоторые данные и результат, который вы ожидаете – deterministicFail

+0

'Date' является параметром? –

+0

@deterministicFail: RDBMS, я дал быстрый пример имени для столбца, поэтому я дал «Date», я знаю, что это зарезервированное слово –

ответ

0
SELECT T1.OTI 
,ISNULL(SUMOFTB,0) AS MyResult --Or equivalent function in your DBMS 
FROM TB1 T1 
     LEFT JOIN TB2 T2 ON T1.OTI = T2.ID 
+0

ISNULL - это специфичный продукт, который dbms? (Нет dbms, о которых идет речь ...) – jarlh

0
SELECT IF(Tb1.SumOfIb IS NULL, 0, Tb1.SumOfTb) as myResult 
FROM Tb2 INNER JOIN Tb1 ON (TB1.OTI = Tb2.Id) 
WHERE Tb2.Date = 'your_date' 
+0

Специфичный для продукта SQL здесь, для которого dbms? (Нет данных, о которых идет речь ...) – jarlh

0

Если дата t2 существует, то t2.date НЕ является NULL и SumOfTb возвращается. Осталось 0.

select case when t2."date" is NOT NULL then t1.SumOfTb 
      else 0 
     end AS MyResult 
from t1 
    left join t2 on Tb1.OTI = Tb2.Id 

Двойные кавычки для "date" там, потому что дата является зарезервированным словом в ANSI SQL, так что имя столбца должен быть ограничен.