Date 型の 10 個のパラメーターを受け取るストアド プロシージャがありますが、このコンサルトですべてのクライアントの情報の流れを表示する必要があるため、コンサルトが null の場合に情報を表示できます。クライアントがクレジットノート付きの注文をすることもありますが、注文だけでクレジットノートを持っていないこともあります...私はWhere句のためにこれを行います:
WHERE
(Customer.cd_CustomerID = ISNULL(@customer, Customer.cd_CustomerID))
AND (@orderID IS NULL OR Orders.cd_OrderID = @orderID)
AND (@Location IS NULL OR CustomerSL.cd_LocID = @Location)
and (Convert(date,Orders.fh_Date,111) BETWEEN coalesce (@FechaPedido1,'1900-01-01') AND coalesce (@FechaPedido2,'3000-12-31' ))
and (Convert(date,Receipt.fh_Date,111) BETWEEN coalesce (@FechaRemision1,'1900-01-01') AND coalesce (@FechaRemision2,'3000-12-31' ))
and (Convert(date,Invoice.fh_Date,111) BETWEEN coalesce (@FechaFactura1,'1900-01-01') AND coalesce (@FechaFactura2,'3000-12-31' ))
and (Convert(date,CreditNote.fh_Date,111) BETWEEN coalesce (@FechaNotaCredito1,'1900-01-01') AND coalesce (@FechaNotaCredito2,'3000-12-31' ))
and (Convert(date,Dispersion.fc_CreatedDate,111) BETWEEN coalesce (@FechaDispersion1,'1900-01-01') AND coalesce (@FechaDispersion2,'3000-12-31' ))
ただし、この場合、クライアントのすべてのフローを含む情報のみを表示します。コンサルトでは、Remissions または Dispersion のない注文を持っていない情報の流れが示されません。どのような場合でも... Where で IF を使用して試してみてください。ただし、構文に問題があります...
if (@fechapedido1 is null) begin (Convert(date,Orders.fh_Date,111) BETWEEN @FechaPedido1 and @FechaPedido2)
end
SQL サーバーに、「キーワード 'Convert' 付近の構文が正しくありません。」というメッセージが表示されます。しかし、その行は正しいです... :S 助けてください:D ありがとう:D