T-SQL使用While循环填充列

时间:2016-08-05 19:19:07

标签: tsql sql-server-2014 insert-into

我有以下问题,而SQL并不是我最强大的技能。我在SQL Server 2014中有以下过程,用于返回报价系统的每个报价中的金额。每个Quote都有Groups,而其中包含部分。:

USE [My_DB_Name]
GO

DECLARE @QuoteNumberID int;  

SELECT @QuoteNumberID = QuoteNumberId FROM [Quote].[Quote]

    WHILE  @QuoteNumberID IS NOT NULL
    BEGIN

                INSERT INTO [Quote].[ZQuoteBackupGL117] (QuoteAmount)(    
                SELECT ISNULL(SUM(ExtendedPrice) ,0) AS QuoteTotal
                FROM(
                        SELECT (Quantity * ((UnitPrice - ISNULL(DollarDiscount, 0)) - 
                        ROUND((((ISNULL(PercentDiscount,0)/100 + ISNULL(CustomerPercentDiscount,0)/100))) * UnitPrice, 2))) AS ExtendedPrice
                        FROM [Quote].[PartGroupPart] p
                          INNER JOIN [Quote].[QuotePartGroup] g ON p.PartGroupID = g.PartGroupID
                          INNER JOIN [Quote].[ZQuoteBackupGL117] q ON g.QuoteID = q.QuoteID 
                        WHERE QuoteNumberId = @QuoteNumberID AND g.IsRecommended = 0 AND g.ExcludeFromTotal = 0 AND (q.GrandTotalValue IS NULL OR q.GrandTotalValue = 0)
                    )tmp)

                    SELECT @QuoteNumberID = MAX(QuoteNumberId) FROM [Quote].[Quote] WHERE @QuoteNumberId > QuoteNumberID
    END

我尝试做的是获取QuoteTotal的值并将其放在表格中每个条目中名为QuoteAmount(money,allow nulls)的[Quote]。[ZQuoteBackupGL117]备份表中的新字段中。我稍后也会在我的生产表上运行它。通常情况下,我会避免使用循环,但这个查询只是运行一次以填充QuoteAmount以追溯报价,其中有数千个。我已经研究过使用INSERT INTO,但是我不确定我应该如何使用这个循环来构造它。你们可以给我的任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你可能想要这样的东西。

.container{
  font-family:sans-serif;
  font-size:18px;
  border: 1px solid black;
}
.test{
  width:50%;
  background-color:#f0f5f5;
}

.container:hover .test{
  background-color:#e6ffe6;
}
.container:hover .test:hover{
  background-color:#ffffe6;
}
.container .test a {
    color:   red ;
}
.container .test a:hover {
    color:green;
}

但我不打赌任何钱。