我正在制定一个账单定制项目,其中描述了客户需求:
首先是一个发票明细表: 例如(表结构和值)
Particulars InvoiceNo InvoiceDate InvoiceQty UnitOfMeasurement Rate Amount Currency
Apple I-90 2-12-2014 1000 Kg 8 8000 INR
它可以包含多个条目..但 InvoiceNo将是不同的
现在另一张表包含发票的损坏明细(用于保险目的)
e.g。 (发票损坏明细表):
Particular InvoiceNo invoiceqty AffectedQty UOM Rate Remarks
Apple I-90 1000 100 Kg 8 Pressed so waste
Apple I-90 1000 500 Kg 8 Smelled And waste
现在,如上所述,特定可以包含不同数量的不同原因。
最后和最后一个表包含所有信息,客户要求以下格式,以便为其客户和用户提供便捷的访问权限:
-----------------------------------------------------------------------------------------
Particular | InvoiceNo | Date | Qty | Claimed | Assessed |
| | | |------------------------------------------------
| | | |Qty | Rate | Amount | Qty | Rate | Amount |
-----------------------------------------------------------------------------------------
|100 | 8 | 800 | 100 | 8 | 800
Apple | I-90 |2-12-2014 |1000 |500 | 8 | 4000 | 500 | 8 | 4000
-----------------------------------------------------------------------------------------
Total : 1000 | 600 4800 | 600 | 4800
这里我想显示总数量(总数),即1000公斤,声称数量:600 ClaimedAmount:4800 ..评估数量:600 ..评估金额:4800
可能会有所有者可以编辑的评估数量,金额和费率也可能会有所不同,但主要和重要的是如何针对多列Claimed And Assessed描述显示一行。
Sql Storage背后的代码如下:
ALTER PROCEDURE [dbo].[InsertTable] @claimID VARCHAR(25) = ''
,@Updateby VARCHAR(70) = ''
,@AffectedQty VARCHAR(30) = ''
,@myTableType MyTableType1 readonly
,@myInvoiceTable MyInvoiceTableNew readonly
AS
-- here MyTableType1 and MyInvoiceTableNew are user defined data types
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DELETE
FROM InvoiceDetail
WHERE Claim_ID = @claimID
INSERT INTO InvoiceDetail (
Claim_ID
,Currency
,Particulars
,InvoiceNo
,InvoiceDate
,Invoice_Qty
,UOM
,Rate
,Amount
,UpdateBy
,UpdateDate
,STATUS
)
SELECT @claimID
,Currency
,Particulars
,InvoiceNo
,InvoiceDate
,Invoice_Qty
,UOM
,Rate
,Amount
,@Updateby
,convert(DATETIME, GETDATE(), 103)
,1
FROM @myInvoiceTable
DELETE
FROM Invoice_Damage_Detail
WHERE Claim_ID = @claimID
INSERT INTO Invoice_Damage_Detail (
Claim_ID
,Particulars
,InvoiceNo
,Invoice_Qty
,Affected_Qty
,UOM
,Rate
,Remarks
,UpdateBy
,UpdateDate
,STATUS
)
SELECT @claimID
,Particulars
,InvoiceNo
,Invoice_Qty
,Affected_Qty
,UOM
,Rate
,Remarks
,@Updateby
,convert(DATETIME, GETDATE(), 103)
,1
FROM @myTableType
DELETE
FROM Invoice_Final_Assessment_Details
WHERE ClaimID = @claimID
INSERT INTO Invoice_Final_Assessment_Details (
ClaimID
,Particular
,InvoiceNo
,InvoiceDate
,InvoiceQty
,ClaimedQty
,ClaimedRate
,ClaimedAmount
,ClaimedUOM
,AssessedQty
,AssessedRate
,AssessesAmount
,Createdate
,UpdateDate
,UpdatedBy
,IsDeleted
)
SELECT @claimID
,mt2.Particulars
,mt2.InvoiceNo
,mt2.InvoiceDate
,mt2.Invoice_Qty
,mt.Affected_Qty
,mt2.Rate
,(CONVERT(BIGINT, isnull(mt2.Invoice_Qty, 0)) * Convert(BIGINT, isnull(mt.Rate, 0))) AS ClaimedAmount
,mt2.UOM
,mt.Affected_Qty
,mt.Rate
,(CONVERT(BIGINT, isnull(mt.Affected_Qty, 0)) * Convert(BIGINT, isnull(mt.Rate, 0))) AS ClaimedAmount
,GETDATE()
,GETDATE()
,@Updateby
,0
FROM @myTableType mt
JOIN @myInvoiceTable mt2 ON 1 = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
END
现在加入1 = 1 我在数据库中应用它会重复行数和发票数量,所有数量都会增加一倍且无法使用。