基于sql中的条件的每月计数值

基于sql中的条件的每月计数值,sql,sql-server,transactions,Sql,Sql Server,Transactions,我有一张购买清单,如下所示: Chassis_Number Customer_Trn Purchase_ID date_sold selling_price tax_amount ------------------------------------------------------------------------------- 1234 567 1234567 2012-1-23 2345653 12343

我有一张购买清单,如下所示:

Chassis_Number  Customer_Trn  Purchase_ID  date_sold  selling_price  tax_amount
-------------------------------------------------------------------------------
1234            567           1234567      2012-1-23  2345653        12343
2345            678           2345678      2013-4-05  1089255        11332
Customer_Trn  Repayment  Monthly_Payment
----------------------------------------
567           456530     4530
CREATE PROCEDURE GetCreditWorthiness 
    @Customer_Trn int 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE isCreditWorthy bit = 0
    DECLARE @Yr = YEAR(getdate())
    DECLARE @Mon = MONTH(getdate())

    SELECT @isCreditWorthy = CASE WHEN COUNT(Credit_Customer.Customer_Trn) < 12 THEN 1 ELSE 0 END
    FROM Credit_Customer 
        INNER JOIN Purchases On Credit_Customer.Customer_Trn=Purchases.Customer_Trn 
    WHERE Credit_Customer.Customer_Trn = @Customer_Trn 
        AND MONTH(date_sold) = @Mon and YEAR(date_sold) = @Yr    

    RETURN @isCreditWorthy
END
另一个表Credit_客户如下所示:

Chassis_Number  Customer_Trn  Purchase_ID  date_sold  selling_price  tax_amount
-------------------------------------------------------------------------------
1234            567           1234567      2012-1-23  2345653        12343
2345            678           2345678      2013-4-05  1089255        11332
Customer_Trn  Repayment  Monthly_Payment
----------------------------------------
567           456530     4530
CREATE PROCEDURE GetCreditWorthiness 
    @Customer_Trn int 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE isCreditWorthy bit = 0
    DECLARE @Yr = YEAR(getdate())
    DECLARE @Mon = MONTH(getdate())

    SELECT @isCreditWorthy = CASE WHEN COUNT(Credit_Customer.Customer_Trn) < 12 THEN 1 ELSE 0 END
    FROM Credit_Customer 
        INNER JOIN Purchases On Credit_Customer.Customer_Trn=Purchases.Customer_Trn 
    WHERE Credit_Customer.Customer_Trn = @Customer_Trn 
        AND MONTH(date_sold) = @Mon and YEAR(date_sold) = @Yr    

    RETURN @isCreditWorthy
END
我正在尝试创建一个交易,该交易统计客户购买monthdate的金额与已售出monthdate的金额


如果credit_客户购买我认为,如果您希望获得所有一个月内交易少于12笔的客户,您应该这样做:

选择Credit_Customer,COUNTCredit_Customer.Customer_Trn AS Cnt,YEARPurchases.date_sall AS Yr,MONTHPurchases.date_sall AS Mon 来自信用卡客户 内部加入赊购\u客户。客户\u Trn=Purchases.Customer\u Trn 按年份分组,周一 计数*小于12的 按信用证客户订购
要检查信用度,您可以执行以下操作:

Chassis_Number  Customer_Trn  Purchase_ID  date_sold  selling_price  tax_amount
-------------------------------------------------------------------------------
1234            567           1234567      2012-1-23  2345653        12343
2345            678           2345678      2013-4-05  1089255        11332
Customer_Trn  Repayment  Monthly_Payment
----------------------------------------
567           456530     4530
CREATE PROCEDURE GetCreditWorthiness 
    @Customer_Trn int 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE isCreditWorthy bit = 0
    DECLARE @Yr = YEAR(getdate())
    DECLARE @Mon = MONTH(getdate())

    SELECT @isCreditWorthy = CASE WHEN COUNT(Credit_Customer.Customer_Trn) < 12 THEN 1 ELSE 0 END
    FROM Credit_Customer 
        INNER JOIN Purchases On Credit_Customer.Customer_Trn=Purchases.Customer_Trn 
    WHERE Credit_Customer.Customer_Trn = @Customer_Trn 
        AND MONTH(date_sold) = @Mon and YEAR(date_sold) = @Yr    

    RETURN @isCreditWorthy
END

您的问题是什么?我如何使用交易来完成业务规则:信用购买每月不得超过12次您的代码有什么问题?代码没有按预期工作;应该进行回滚,以防止在特定月份赊购12辆以上的车辆。我正在销售车辆。我不想赊销我所有的车。我赊销的车辆数量必须有一个限制。我想把这个月的限额加进去。回滚应该发生,以防止在特定月份赊购12辆以上的车辆。我将编写另一个存储过程,并让您的应用程序调用它来检查信用度。你可以进行另一次检查,防止插入,但前端应该处理这个。我是一个在编码SP和传输的初学者。。。我将代码放在if语句中,但它不起作用。是否可以将if与上述代码一起使用?怎么做?这个答案很有用。。。现在,我是要写入另一个sp并将事务块放在那里,还是可以立即将事务块放在后面?