Как преодолеть ошибку деления на ноль в следующем запросе - PullRequest
0 голосов
/ 11 июня 2018

Ниже приведена структура таблицы

table A      Table B
10              10
20              10
30              0
40              0

Я хочу разделить A / B.если есть 30/0, я хочу отобразить его как 0.

Я хочу вывести как

O/P
1
2
0
0

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

Table structure queries:
create table #test1(id int)

insert into #test1 values(10)
insert into #test1 values(20)
insert into #test1 values(30)
insert into #test1 values(40)

select top 100 * from #test1

create table #test2(id int)

insert into #test2 values(10)
insert into #test2 values(10)
insert into #test2 values(0)
insert into #test2 values(0)

select top 100 * from #test2

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Попробуйте этот запрос:

select A, B, case B when 0 then B else A/B end [A/B]
from (values (10,10),(20,10),(30,0),(40,0)) tbl(A,B)

Выше запрос использует оператор case для возврата 0 при B = 0 и деления при B <> 0.

0 голосов
/ 11 июня 2018

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

SELECT A.id,B.id, IIF(B.id<>0,A.Id/B.ID,0) AS ExpectedResult,
       COALESCE( A.id/NULLIF(B.ID,0),0)  AS ExpectedResult2
FROM
(
SELECT Id,ROW_NUMBER()OVER(Order BY ID) As Seq FROM #test1
)As A
INNER JOIN 
(
SELECT Id,ROW_NUMBER()OVER(Order BY ID DESC) As Seq FROM #test2)AS B
ON A.Seq=B.Seq

Результат

 id id  ExpectedResult  ExpectedResult2
10  10     1                    1
20  10     2                    2
30  0      0                    0
40  0      0                    0   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...