मेरे पास पिछले 24 महीनों की रिपोर्ट लाने के लिए default_report फ़ंक्शन है

CREATE FUNCTION dbo.default_report
RETURNS TABLE
AS
RETURN
(
    SELECT ID,sender,recipient,amount,currency
    FROM reports
    where submit_date >= dateadd(month,datediff(month,0,getdate())-24,0)
)

मेरे पास विशिष्ट तिथियों के लिए रिपोर्ट लाने के लिए custom_report फ़ंक्शन है

CREATE FUNCTION dbo.custom_report(@start_date DATE,@end_date DATE)
RETURNS TABLE
AS
RETURN
(
    SELECT ID,sender,recipient,amount,currency
    FROM reports
    where submit_date BETWEEN @start_date AND @end_date
)

उपरोक्त दो कार्यों में एकमात्र चर वह है जहां क्लॉज है, क्या उपरोक्त दो कार्यों को एक में मिलाने और उन्हें काम करने का कोई तरीका है?

0
RanPaul 21 जिंदा 2020, 21:45

1 उत्तर

सबसे बढ़िया उत्तर

अच्छा, आप कर सकते हैं:

CREATE FUNCTION dbo.custom_report (
    @start_date DATE = NULL,
    @end_date DATE = NULL
) RETURNS TABLE
AS
RETURN (SELECT ID, sender, recipient, amount, currency
        FROM reports
        WHERE submit_date >= COALESCE(@start_date, dateadd(month, -24, datefromparts(year(getdate()), month(getdate()), 1))) AND
              submit_date <= COALESCE(@end_date, getdate())
       );

मैं अनुमान लगा रहा हूं कि आपके पास भविष्य की कोई तारीख नहीं है, इसलिए @end_date की स्थिति को @start_date स्थिति के बाद सब कुछ मिल जाता है।

मैंने 24 महीने पहले की तारीख की गणना भी बदल दी है, इसलिए यह अधिक सुगम है।

1
Gordon Linoff 21 जिंदा 2020, 22:03