我有三个名为financetrail,fooperson和idDog的sql表。所有这些表都有idFoo
列:
我创建了以下存储过程
CREATE PROCEDURE [dbo].[getCustomerFinance] @idFinanceType INT
AS
BEGIN
SELECT idCustomer
FROM financetrail
where idFinanceType = @idFinanceType ;
END
GO
所以我可以动态选择某种财务类型的客户。
上述过程沿着这些行生成一个表:
我也有这个查询
SELECT firstName , lastName
FROM IdDog RIGHT JOIN fooPerson
ON IdDog.idFoo = fooPerson.idFoo WHERE IdDog.idIdDog IS NULL;
结果给了我所有在狗桌上没有狗的顾客。
我想创建一个存储过程,它会给我所有没有有效idCard(上面的查询)并且具有从上面的存储过程定义的某种riskType的客户。
我尝试了什么?
我尝试过以下操作:
ALTER PROCEDURE [dbo].[getMissingDogs]
AS
BEGIN
DECLARE @financeFilterTable table ( idCustomer INT)
INSERT INTO @financeFilterTable
EXEC getCustomerRisk 3
SELECT * FROM @financeFilterTable
SELECT firstName , lastName
FROM IdCard RIGHT JOIN FooPerson
ON IdCard.idCustomer = FooPerson.idFoo WHERE IdDog.idIdDog IS NULL;
END
我得到以下结果:
在当前结果集中,我有两个表。一个表为特定风险类型的客户提供客户ID,第二个表为没有idCard的客户提供。
我想在一个表中找到满足这两个条件(具有特定风险类型但没有idCard)的所有客户 这可能吗?
答案 0 :(得分:1)
我不确定我是否完全理解您的要求。是否可以发布一些样本数据和预期的查询结果?
下面存储的程序可能适合您吗?
ALTER PROCEDURE [dbo].[getMissingDogs]
@idFinanceType INT
AS
BEGIN
DECLARE @financeFilterTable table ( idCustomer INT)
INSERT INTO @financeFilterTable
EXEC getCustomerRisk @idFinanceType
SELECT firstName , lastName
FROM IdCard RIGHT JOIN FooPerson ON IdCard.idCustomer = FooPerson.idFoo
INNER JOIN @financeFilterTable AS RiskType ON RiskType.idCustomer = IdCard.idCustomer
WHERE IdDog.idIdDog IS NULL;
END