复杂的SQL查询帮助Pl

时间:2019-08-29 08:45:16

标签: sql

好吧,我有2个名为“ A”和“ B”的表

其中一个表(A)在此记录中包含许多记录ı有一列包含“ SENDER_CONTACT_NUMBER”,这可能是来自同一发件人的发票过多。

其他表包含'SENDER_CONTACT_NUMBER'和'STATUS'(1-处于活动状态)(0-未处于活动状态),因此在此表中'SENDER_CONTACT_NUMBER'是唯一的,我想通过SQL查询联合2表'SENDER_CONTACT_NUMBER'和我想要为每个“ SENDER_CONTACT_NUMBER”创建2列。我想在表A中进行计数(我解决了第一部分,但第二个问题对我来说是真正的问题,因为B表“ SENDER_CONTACT_NUMBER”可能不在A表中,因此在这种情况下,我无法显示计数:(

表A

INVOICE_TYPE_CODE   varchar no
SENDER_CONTACT_NUMBER   varchar no
SENDER_IDENTIFIER   varchar no
SENDER_NAME         varchar no
RECEIVER_CONTACT    varchar no
RECEIVER_IDENTIFIER varchar no
RECEIVER_NAME           varchar no

表B

SENDER_CONTACT_NUMBER   varchar no
URUN            varchar no
BASTAR             char no
BITTAR             char no
STATUS         smallint no

我想看的结果

第1列

联盟SENDER_CONTACT_NUMBER LIST BY STATUS = 1

第2列

对于第1列sender_contact_number中的每条记录,如果没有记录,则显示计数为0

enter image description here

1 个答案:

答案 0 :(得分:0)

假设您要对表A中每个SENDER_CONTACT_NUMBER的出现次数进行计数,包括来自B中在A中没有相应记录的记录,那么这应该起作用:

SELECT B.SENDER_CONTACT_NUMER, COUNT(A.INVOICE_TYPE_CODE) AS Invoices
FROM B
    LEFT JOIN A ON B.SENDER_CONTACT_NUMER = A.SENDER_CONTACT_NUMER
WHERE B.STATUS = 1  -- Only include active contacts