1
日付に基づいてデータを取得する手順があります。SQLでヌルチェックを最適化する方法は?
ALTER PROCEDURE [dbo].[GetLatestTicketsByDate]
@Datemin datetime2,
AS
BEGIN
DECLARE @LatestTickets TABLE
(
DomainId bigint,
SoldTickets bigint
)
INSERT INTO @LatestTickets(DomainId,SoldTickets)
SELECT
DomainId, SoldTickets
FROM
DomainDetailDataHistory
WHERE
[Date] >= @Datemin
SELECT * FROM @LatestTickets
END
は今、私はそれに新規のparamaterを追加することによって、この手順は、よりスマートにしたいが、これのparamaterはオプションです。
私のコードは次のようになります。
ALTER PROCEDURE [dbo].[GetLatestTicketsByDate]
@Datemin datetime2,
@Id uniqueidentifier = NULL
AS
BEGIN
DECLARE @LatestTickets TABLE
(
DomainId bigint,
SoldTickets bigint
)
IF (@Id IS NULL)
BEGIN
INSERT INTO @LatestTickets(DomainId,SoldTickets)
SELECT DomainId, SoldTickets
FROM DomainDetailDataHistory
WHERE [Date] >= @Datemin
SELECT * FROM @LatestTickets
END
ELSE
BEGIN
INSERT INTO @LatestTickets(DomainId,SoldTickets)
SELECT DomainId, SoldTickets
FROM DomainDetailDataHistory
WHERE Id = @Id AND [Date] >= @Datemin
SELECT * FROM @LatestTickets
END
END
これは動作しますが、私はこのような構造を好きではないし、より良い方法があればと思いまして?
私はこの試みた:
INSERT INTO @LatestTickets(DomainId,SoldTickets)
SELECT DomainId, SoldTickets
FROM DomainDetailDataHistory
WHERE (@Id IS NOT NULL AND Id = @Id) AND [Date] >= @Datemin
SELECT * FROM @LatestTickets
をしかし、それは動作しませんでした。
すごい...まあ、私は正しい軌道に乗りました。私はこの時間をどのくらいの時間を置いているか教えてくれません – ThunD3eR