要求:生成一个查询,该查询根据用户输入的StartDate,EndDate和Upper Data Threshold输入基于电话号码的数据。
这些输入变量是查询的界限。因此,SELECT语句相应地写在下面。
唯一需要注意的是,如果某个电话号码的单个记录超过了“上限数据阈值”,那么与该违规电话号码相关联的所有电话号码记录都不应输出,无论该相同电话号码的其他记录是否违反该记录。数据阈值。以下是样本输入和预期输出:
User input Start Date: 1/15/2015 User input End Date: 11/15/2015 User input Upper Data Threshold in kB: 50 [Master] Table in Access: Invc Date Mobile Nbr PktDtVol --------- ---------- -------- 1/15/15 647-409-8206 48kB 2/15/15 647-409-8206 33kB 3/15/15 647-409-8206 8000kB 4/15/15 647-409-8206 20kB 5/15/15 647-409-8206 10kB 6/15/15 647-409-8206 0kB 7/15/15 718-500-2311 3kB 8/15/15 718-500-2311 45kB 9/15/15 718-500-2311 25kB 10/15/15 514-300-3311 33kB 11/15/15 514-300-3311 20kB
[Temp_Table]中的预期输出:
Invc Date Mobile Nbr PktDtVol Difference in Days --------- ---------- -------- ------------------- 7/15/15 718-500-2311 3kB 304 8/15/15 718-500-2311 45kB 304 9/15/15 718-500-2311 25kB 304 10/15/15 514-300-3311 33kB 304 11/15/15 514-300-3311 20kB 304
我当前的解决方案:
PARAMETERS [Start Date] DateTime, [End Date] DateTime, [Upper Bound Usage in KB] IEEEDouble; SELECT [Master].[Invc Date], [Master].PktDtVol, [Master].[Mobile Nbr], DateDiff("d",[Start Date],[End Date]) AS [Difference in days] INTO Temp_Table FROM [Master] WHERE ((([Master].[Invc Date]) >= [Start Date] And ([Master].[Invc Date])<=[End Date]) AND (([Master].PktDtVol)<= [Upper Bound Usage in KB]));
647-409-8206记录不会在输出中出现,因为只用了1条记录就超过了50kB(是第3条记录),因此所有647-409-8206条记录都将被忽略。
请感谢任何帮助!谢谢!
首先编写一个子查询,选择一行违反阈值的所有(不同的)移动电话号码。然后从表中选择所有行WHERE [Mobile Nbr] NOT IN (subquery)。
WHERE [Mobile Nbr] NOT IN (subquery)