oracle sql中如何使用select语句只查询负值

问题描述 投票:0回答:1
table_a 

billno    desc        qty    amount
10324    orange       -1     -1.00
10324    apple         1      3.00
10324    papaya        1      2.00

10431    water melon   1      2.00
10431    kiwi          1      3.00   

10233    banana       -1     -2.50
10233    mango         1      4.00
..
.. 
total 378 records

嗨,如果我不知道billno,如何使用select语句查询desc,qty和amount在billno中有负数?

我曾尝试使用 sign(number) 语法,但结果不正确。

select desc,qty,amount from table_a where sign(qty)='-1';
orange       -1     -1.00
banana       -1     -2.50

我的目标

orange       -1     -1.00
apple         1      3.00
papaya        1      2.00  

banana       -1     -2.50
mango         1      4.00

非常感谢您的帮助。

oracle sqlplus
1个回答
0
投票

可以用

EXISTS
在同一张表中查找同一个
billno
是否有数量为负数的物品

WITH
    table_a (billno,
             item_desc,
             qty,
             amount)
    AS
        (SELECT 10324, 'orange', -1, -1.00 FROM DUAL
         UNION ALL
         SELECT 10324, 'apple', 1, 3.00 FROM DUAL
         UNION ALL
         SELECT 10324, 'papaya', 1, 2.00 FROM DUAL
         UNION ALL
         SELECT 10431, 'water melon', 1, 2.00 FROM DUAL
         UNION ALL
         SELECT 10431, 'kiwi', 1, 3.00 FROM DUAL
         UNION ALL
         SELECT 10233, 'banana', -1, -2.50 FROM DUAL
         UNION ALL
         SELECT 10233, 'mango', 1, 4.00 FROM DUAL)
SELECT *
  FROM table_a a1
 WHERE EXISTS
           (SELECT 1
              FROM table_a a2
             WHERE a2.billno = a1.billno AND a2.qty < 0)
© www.soinside.com 2019 - 2024. All rights reserved.