在存储过程中向表中插入常量值

时间:2014-07-23 00:20:26

标签: sql sql-server join constants

我有以下存储过程:

DECLARE @BeginDate1 datetime, @EndDate1 datetime
set @BeginDate1 = '04-01-2012'
set @EndDate1  = '03-31-2013'
BEGIN

    INSERT INTO MTBUR_Type_Stage
       SELECT 
          R.Type, [Hours], 
          LEFT(dbo.fn_GetPartName(R.PartID),CHARINDEX('-',dbo.fn_GetPartName(R.ACSS_PartID), 1) - 1) AS 'Part No', 
          Count(s.status) AS NumberUnscheduled, 
          ([Hours]/Count(s.status)) AS MTBUR
       FROM 
          Repair R
       INNER JOIN 
          Conversion C ON (R.Performed = C.Performed)
                       AND (R.Confirmed = C.Confirmed)
       INNER JOIN 
          Status S ON C.StatusID = S.StatusID
       INNER JOIN 
          #MTBUR_Hrs_Temp TEMP ON LEFT(dbo.fn_GetPartName(R.PartID),CHARINDEX('-',dbo.fn_GetPartName(R.PartID), 1) - 1) = TEMP.productNo
                               AND R.Type = TEMP.Type  
        WHERE 
           (R.Received BETWEEN @BeginDate1 AND @EndDate1)
           AND (S.Status = 'UNSCHEDULED')
        GROUP BY 
           LEFT(dbo.fn_GetPartName(R.PartID),CHARINDEX('-',dbo.fn_GetPartNaame(R.PartID), 1) - 1), [Hours], R.Type
        ORDER BY 
           R.Type, 
           LEFT(dbo.fn_GetPartName(R.ACSS_PartID),CHARINDEX('-',dbo.fn_GetPartID(R.PartID), 1) - 1) ASC

    DROP TABLE #MTBUR_Hrs_Temp
END

正在插入的表格(MTBUR_Type_Stage)包含名为EndingDateEndingQuarter的列。 EndingDate需要具有相同的日期(常量),等于@EndDateEndingQuarter需要具有1的常量值

如何在我的存储过程中编写脚本,以便在MTBUR_Type_Stage的相关列中使用这些常量填充所有行?是否填充了这些常量?

以下是我插入的表的DDL:

CREATE TABLE [dbo].[MTBUR_ByType_StageTbl]
(
    [Type] [nvarchar](25) NULL,
    [Hours] [float] NULL,
    [Part No] [varchar](15) NULL,
    [UnscheduledRemovals] [int] NULL,
    [MTBUR] [float] NULL,
    [EndingDate] [datetime] NULL,
    [EndingQuarter] [int] NULL
) ON [PRIMARY]

1 个答案:

答案 0 :(得分:2)

这很简单:

insert MTBUR_Type_Stage(EndingDate,EndingQuarter)
values (@EndDate,1)
;

或者

insert MTBUR_Type_Stage(EndingDate,EndingQuarter)
select @EndDate,1

扩展了更多字段:

insert MTBUR_Type_Stage( 
    [Type],
    [Hours],
    [Part No],
    [UnscheduledRemovals],
    [MTBUR],
    [EndingDate],
    [EndingQuarter] [int] NULL
)
select 
    'x',1.00,'part 1', 0, 2.34,
    @EndDate,1