Sql存储过程中的问题

时间:2015-01-28 10:52:30

标签: sql sql-server

在下面的sql查询当我用where条件中的某些值执行它时,它显示数据,如果我将值放在[Sp_GrnValuationReportV1] - 1,' GR140000001' GR140000009' GR140000009' ;,' 2014年10月11日'' 2014年12月25日'它显示没有数据。请帮我解决问题。

ALTER PROCEDURE [dbo].[Sp_GrnValuationReportV1] --1,'GR140000001','GR140000009','2014-10-11','2014-12-25'
    -- Add the parameters for the stored procedure here

    @i_LocationID int,
    @i_GrnStartNo varchar,
    @i_GrnEndNo varchar,
    @d_StartDate DATE,
    @d_EndDate DATE
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 GRN.GoodsReceivedNoteNo,GRN.LocationID,GRN.CreatedOn,PO.PurchaseOrderNo,V.VendorName,
    GRN.SupplierInvoiceNo,GRN.SupplierInvoiceDate,SR.LRNO,T.TransporterName,
CASE
    WHEN Count(GRND.GoodsReceivedNoteID) OVER(partition BY GRND.GoodsReceivedNoteID) > 1 
    THEN Isnull(( GRND.FreightCharges ), 0.00)
    ELSE Isnull(( OEC.FreightCharges ), 0.00)
END FreightCharge,CASE
    WHEN Count(GRND.GoodsReceivedNoteID) OVER(partition BY GRND.GoodsReceivedNoteID) > 1 
    THEN Isnull(( GRND.LoadingCost + GRND.UnloadingCost ), 0.00)
    ELSE Isnull(( OEC.LoadingCost + OEC.UnloadingCost ), 0.00)
END LoadingandUnloadingcharges ,
    P.ProductCode,P.ProductName,GRND.ReceivedQuantity,GRND.RejectedQuantity,GRND.AcceptedQuantity,
    GRND.UnitPrice AS BasicRate,ISNULL( (GRND.UnitPrice*GRND.ReceivedQuantity),0.00) BasicValue,GRND.VAT,CASE
    WHEN Count(GRND.GoodsReceivedNoteID) OVER(partition BY GRND.GoodsReceivedNoteID) > 1 
    THEN Isnull(( GRND.FreightCharges ), 0.00)
    ELSE Isnull(( OEC.FreightCharges ), 0.00)
END FreightApportioned,
    CASE
    WHEN Count(GRND.GoodsReceivedNoteID) OVER(partition BY GRND.GoodsReceivedNoteID) > 1 
    THEN Isnull(( GRND.LoadingCost + GRND.UnloadingCost ), 0.00)
    ELSE Isnull(( OEC.LoadingCost + OEC.UnloadingCost ), 0.00)
END LoadingandUnloadingApportioned,ISNULL((GRND.UnitPrice+OEC.FreightCharges+OEC.LoadingCost+OEC.UnloadingCost),0.00)AS TotalCost           
    FROM GoodsReceivedNoteDetail GRND
    LEFT OUTER JOIN GoodsReceivedNote GRN ON GRN.GoodsReceivedNoteID=GRND.GoodsReceivedNoteID 
    LEFT OUTER JOIN PurchaseOrder PO ON PO.PurchaseOrderID=GRN.PurchaseOrderID
    LEFT OUTER JOIN Vendor V ON V.VendorID=PO.VendorID
    LEFT OUTER JOIN SecurityRegister SR ON SR.SecurityRegisterID=GRN.SecurityRegisterID
    LEFT OUTER JOIN Transporter T ON T.TransporterID=SR.TransporterID
    LEFT OUTER JOIN OtherExpenseCost OEC ON OEC.GoodsReceivedNoteID=GRN.GoodsReceivedNoteID 
    LEFT OUTER JOIN Product P ON P.ProductID=GRND.ProductID
    --WHERE   GRN.LocationID=@i_LocationID AND GRN.GoodsReceivedNoteNo>=@i_GrnStartNo AND GRN.GoodsReceivedNoteNo<=@i_GrnEndNo or GRN.CreatedOn>=@d_StartDate AND GRN.CreatedOn<=@d_EndDate
    WHERE  CAST( GRND.CreatedOn AS DATE)>=@d_StartDate AND  GRN.LocationID=1 AND CAST( GRND.CreatedOn AS DATE) <=@d_EndDate  AND GRN.GoodsReceivedNoteNo>=  @i_GrnStartNo AND GRN.GoodsReceivedNoteNo <=@i_GrnEndNo

2 个答案:

答案 0 :(得分:0)

要在大查询中查找问题,请按照此说明进行操作

  1. 将存储过程的主体复制并粘贴到新的查询窗口
  2. 将select中的列更改为*。我的意思是将您的查询更改为select * from
  3. 在查询顶部声明参数并将值设置为
  4. 开始评论联接并运行查询以查看哪一个使其不返回任何行。您可能需要在where语句中注释相应的条件。
  5. 我希望这有助于你

答案 1 :(得分:0)

提及varchar的大小

@i_GrnStartNo varchar(50),
    @i_GrnEndNo varchar(50),
相关问题