【发布时间】:2019-05-23 05:57:25
【问题描述】:
我有两张桌子:
包含所有产品的 productID(productName、productID)的产品表
包含以下列的交易记录表:日期(过去 3 个月)和产品 ID。所有 productID 都应至少有每个日期的一条记录。
但是,某些 dats 缺少 productID 记录,我想查找缺少的 productID 以及它们缺少的相应日期。
目前,我只能找到一个特定日期的缺失记录,即:
Select productName, productID
from product a inner join transaction b
On a.productid=b.productid
Where a.productid not in
(
Select distinct productid
From transaction
Where date='2019-03-01'
)
我想要一个表格来合并所有日期及其各自缺失的 productid 记录。我该如何从这里开始?
create table product
(ProductID INT,
ProductName Char (30)
);
insert into product values
(1, 'apple'),
(2, 'orange'),
(3, 'pear');
create table transaction1
(transDate Date,
productID INT,
revenue FLOAT);
insert into transaction1 values
('2019-03-01', 1, 2.5),
('2019-03-01', 2, 4.0),
('2019-03-01', 2, 8.0),
('2019-03-01', 3, 6.0),
('2019-03-02', 1, 7.0),
('2019-03-02', 3, 14.0),
('2019-03-03', 1, 1.5) ;
我所拥有的将与此类似,其中 productID=2 从 03-02 中丢失。我工作的日期从年初到昨天,都记录在事务表中。 @SimonPrice
【问题讨论】:
-
您能否转到 SQLFIddle 并重新创建问题,以便我们为您提供帮助。它只需要是一个最小的示例,但是,在每个表中提供 20 条记录,以便我们知道您在使用什么。您是否希望在某个日期范围或特定日期或多个日期或范围内执行此操作?
-
提示:使用全外连接并在 productid 中查找 NULL。
-
您使用的是哪个数据库?
-
@mkRabbani 抱歉,您能详细说明一下这个问题吗?我正在使用的数据库包含多个表,而我正在使用的两个表只是该数据库的一小部分。我正在使用 Microsoft SQL Server 2012
-
得到你的答案 "microsoft SQL server 2012" :) 你应该在你的问题中标记这个数据库,这有助于其他人。
标签: sql sql-server-2012