gpt4 book ai didi

mysql - 如何为没有内容的行打印零?

转载 作者:太空宇宙 更新时间:2023-11-03 12:13:39 25 4
gpt4 key购买 nike

我有两个银行数据库表。一个是客户列表,另一个是帐户列表。当我离开外部加入客户帐户时,我有没有任何客户记录。我怎样才能为他们打印零?

    SQL> CREATE TABLE Customer (
2 BSB# CHAR(6) NOT NULL, /* Bank BSB number */
3 Customer# NUMBER(10) NOT NULL, /* Customer number */
4 Name VARCHAR2(30) NOT NULL, /* Customer name */
5 DOB Date, /* Date of birth */
6 Sex CHAR, /* M-Male, F-Female */
7 Address VARCHAR2(50) NOT NULL, /* Customer address */
8 Phone# VARCHAR2(15), /* Phone number */
9 CONSTRAINT Project_PK PRIMARY KEY(BSB#, Customer#),
10 CONSTRAINT Project_FK FOREIGN KEY (BSB#) REFERENCES Bank(BSB#)
11 );

SQL> CREATE TABLE Account (
2 BSB# CHAR(6) NOT NULL, /* Bank BSB number */
3 Customer# NUMBER(10) NOT NULL, /* Customer number */
4 Account# NUMBER(10) NOT NULL, /* Account number */
5 Type VARCHAR2(20) NOT NULL, /* Account type */
6 Balance NUMBER(10,2) NOT NULL, /* Account balance */
7 CONSTRAINT WorksOn_PK PRIMARY KEY(BSB#, Account#),
8 CONSTRAINT WorksOn_FK1 FOREIGN KEY(BSB#, Customer#) REFERENCES Customer(BSB#, Customer#)
9 );

命令:

select c.name, CUS.MYSUM
from customer c
left outer join
(
select customer#,sum(balance) MYSUM
from account
group by customer#
) CUS
on c.customer# = CUS.customer#;​

输出:

NAME                                MYSUM
------------------------------ ----------
Ben -470211.09
Mike -470211.09
Jean -60028.03
Douglas 1970.35
Josef 1970.35
Duke 54469.12
Alex -323631.76
Harry
Will

我想在哈利和威尔面前打印 0?

最佳答案

将您的第一个查询行更改为

select c.name, COALESCE(CUS.MYSUM, 0)

COALESCE 是一个标准的 sql 函数,它返回其参数中第一个表达式的值,该表达式的计算结果为 NULL。如果没有这样的表达式,它将返回 NULL。

搜索的 CASE 表达式提供类似的功能:

select c.name, CASE WHEN CUS.MYSUM IS NULL THEN '0' ELSE CUS.MYSUM END

优点是:

  • 在非空情况下使用的实际值不必是检查列的值
  • 你可以测试任意表达式

价格为

  • 可读性较差
  • 性能影响(通常可以忽略不计,在复杂的查询结果集投影中[即选择列]花费的处理时间最少)。

引用:mysql 5.0 doc on COALESCE

关于mysql - 如何为没有内容的行打印零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23129798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com