【问题标题】:Need help set my parameters需要帮助设置我的参数
【发布时间】:2014-04-05 21:21:09
【问题描述】:

我不知道为什么这个该死的脚本不起作用请帮忙!!!

我只想使用我的日期参数获取信息。我得到的只是没有提取信息的列。

ALTER PROCEDURE [dbo].[sp_GerberCutter]
-- Add the parameters for the stored procedure here
@startdate Date,
@enddate Date,
@designid varchar (7)

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.



SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT DISTINCT 
SL.SALESID,
SL.DESIGNID,
DS.NAME as [DESIGN NAME],
CAST(ceiling(SL.MMI_WIDTHDIMENSION/12) as nvarchar(5)) + 'x' +     CAST(ceiling(SL.MMI_LENGTHDIMENSION/12) as nvarchar(5)) AS SIZE,
SL.QTYORDERED as QTY,
DATEADD(ss,CCS.MMI_CONFIRMTIME, CCS.CONFIRMDATE) as ORDERCONFIRMED,
(SELECT TOP 1 DL.Timestamp FROM DESIGNS.DBO.DesignLog DL WHERE DL.DESIGNNBR=SL.DESIGNID AND DL.NOTES like '%CONVERT%PRODUCTION%') AS CUTFILE,
(SELECT TOP 1 DL.Timestamp FROM DESIGNS.DBO.DesignLog DL WHERE DL.DESIGNNBR=SL.DESIGNID     AND DL.DESIGNER='MTR' and DL.ACTION='P' and DL.NOTES like '%INLAID%') AS CARPETCUT,

DATEDIFF(hour, (DATEADD(ss,CCS.MMI_CONFIRMTIME, CCS.CONFIRMDATE)), (SELECT TOP 1 DL.Timestamp FROM DESIGNS.DBO.DesignLog DL WHERE DL.DESIGNNBR=SL.DESIGNID AND DL.DESIGNER='MTR' and DL.ACTION='P' and DL.NOTES like '%INLAID%')) as HOURSTOCOMPLETE,
Case 
          When (SELECT TOP 1 DL.Timestamp FROM DESIGNS.DBO.DesignLog DL WHERE  DL.DESIGNNBR=SL.DESIGNID AND DL.DESIGNER='MTR' and DL.ACTION='P' and DL.NOTES like '%INLAID%')  Between DateAdd(hh, 07, @startdate) And DateAdd(hh, 14, DateAdd(mi, 59, @enddate)) Then 'S1' 

When (SELECT TOP 1 DL.Timestamp FROM DESIGNS.DBO.DesignLog DL WHERE DL.DESIGNNBR=SL.DESIGNID AND DL.DESIGNER='MTR' and DL.ACTION='P' and DL.NOTES like '%INLAID%')  Between DateAdd(hh, 15, @startdate) And DateAdd(hh, 22, DateAdd(mi, 59, @enddate)) Then 'S2' 

When (SELECT TOP 1 DL.Timestamp FROM DESIGNS.DBO.DesignLog DL WHERE DL.DESIGNNBR=SL.DESIGNID AND DL.DESIGNER='MTR' and DL.ACTION='P' and DL.NOTES like '%INLAID%')  Between DateAdd(hh, 23, @startdate) And DateAdd(hh, 30, DateAdd(mi, 59, @enddate)) Then 'S3' 

End As [CARPETCUT SHIFT]

FROM DESIGNS.DBO.DesignLog DL

INNER JOIN AXLIVESALES.DBO.SALESLINE SL
ON SL.DESIGNID=DL.DESIGNNBR AND SL.RECID=DL.AxRecordId

INNER JOIN DESIGNS.DBO.DESIGNS DS
ON DL.DESIGNNBR=DS.NBR

INNER JOIN AXLIVESALES.DBO.CUSTCONFIRMSALESLINK CCS
ON CCS.SALESID=SL.SALESID AND CCS.DATAAREAID=SL.DATAAREAID

INNER JOIN INVENTDIM ID
ON SL.INVENTDIMID=ID.INVENTDIMID AND ID.DATAAREAID='V02'

WHERE 
SL.DESIGNID = @designid and  DL.DESIGNER='MTR' and DL.ACTION='P' and DL.NOTES like          '%INLAID%' and SL.DATAAREAID='MMI'and (SELECT TOP 1 DL.Timestamp FROM DESIGNS.DBO.DesignLog DL WHERE DL.DESIGNNBR=SL.DESIGNID AND DL.DESIGNER='MTR' and DL.ACTION='P' and DL.NOTES like '%INLAID%') = @enddate

ORDER BY CARPETCUT DESC;

END

【问题讨论】:

  • 你的数据库结构是什么?它还指的是 DESIGNS 数据库,只是为了确定您想对 2 个数据库或 1 个数据库进行查询,如果您是在 DESIGNS DB 或另一个数据库上创建过程?
  • 我想查询 1 个数据库。我只是加入来自其他数据库的列。至于结构,我不完全确定,因为我正在帮助一个朋友

标签: sql-server tsql datetime parameters


【解决方案1】:

您确定在执行过程时已将开始日期和结束日期传递给正确的参数吗?是否存在某些地区混淆,将月份数字解释为天数,反之亦然?

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多