基于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并将事务块放在那里,还是可以立即将事务块放在后面?