我正在尝试从2个表(CUSTOMER& SAMPLE)生成一个列表,如下所示:
Location Program Sample Count Total $$$
1 A 200 1234.56
1 B 500 7890.12
1 C 0 0
2 A 1000 9876.54
2 B 0 0
2 C 250 2345.67
但这就是我和你的关系:
Location Program Sample Count Total $$$
1 A 200 1234.56
1 B 500 7890.12
2 A 1000 9876.54
2 C 250 2345.67
这是我使用
的查询select s.LOCATION, c.PROGRAM_CODE, count(*),
sum(NVL(s.PRICE_AMOUNT,0) + NVL(s.RUSH_CHARGE,0) + NVL(s.ADD_TEST_PRICE,0))
from CUSTOMER c
left join SAMPLE s on c.ID = s.CUSTOMER
where
((NVL(s.PRICE_AMOUNT,0) + NVL(s.RUSH_CHARGE,0) + NVL s.ADD_TEST_PRICE,0)) > '0.00')
group by s.LOCATION, c.PROGRAM_CODE
order by s.LOCATION, c.PROGRAM_CODE
非常感谢任何帮助。提前谢谢!
答案 0 :(得分:1)
我看到的唯一问题是您在代码中使用的是>
而不是>=
,因此您只能获得大于0的项目。只需将WHERE
条件更改为< / p>
where ((NVL(s.PRICE_AMOUNT,0) + NVL(s.RUSH_CHARGE,0) + NVL s.ADD_TEST_PRICE,0)) >= 0.00)
请注意,使用数字时,您无需在值周围添加'
,因此您只需使用'0.00'
而不是0.00
。
答案 1 :(得分:1)
因为您的条件包含“&gt;'0.00'”
where ((NVL(s.PRICE_AMOUNT,0) + NVL(s.RUSH_CHARGE,0) + NVL s.ADD_TEST_PRICE,0)) > '0.00')
应该是
where ((NVL(s.PRICE_AMOUNT,0) + NVL(s.RUSH_CHARGE,0) + NVL s.ADD_TEST_PRICE,0)) >= '0.00')
答案 2 :(得分:0)
假设:
你需要一个OR ......
(((NVL(s.PRICE_AMOUNT,0) + NVL(s.RUSH_CHARGE,0) + NVL s.ADD_TEST_PRICE,0)) > '0.00')
OR S.Customer is null)
但是,如果您只想返回所有客户,那么其他两个答案都是正确的。通过调整为&#39;&gt; = ...&#39;而不是&#39;&gt;&#39;