如何在带有 DropDownList 控制参数的 .aspx 网页上将查询格式化为 return 日期不晚于 90 天的数据?

How to format a query to return data dating no later than 90 days on a .aspx web page with DropDownList control parameter?

变量@status在一个网页上取三个值,C、N、V,如果选择调用下面的查询。 如何在下面的查询中将查询格式化为 return 日期不迟于 90 天的数据,以便 return 如果选择,日期 (entry_date) 不迟于 90 天的项目只有 @status = 'C',但对于其他状态 V 和 N 到 return 没有任何日期限制的数据?

    <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"  

 SelectCommand="SELECT W.order_id, w.entry_date, w.s_num, w.prot_num, w.i_num, w.phm_num, w.status, w.Comments, w.UName, w.prStatus, S.S_Name, 
                  ISNULL(p.Phm_fname, ' ') + ' ' + ISNULL(p.Phm_lname, ' ') AS 'PhmName', ISNULL(S.PHM_CITY, ' ') + ' ' + ISNULL(S.PHM_STATE, ' ') AS 'Phm_city'
FROM         Web_Ship AS w INNER JOIN
                  Phm_of_rcrd AS p ON p.phm_num = w.phm_num INNER JOIN
                  Stdy_Site AS S ON w.s_num = S.S_Num
WHERE     (w.status = @status)
ORDER BY w.order_id DESC"
            <SelectParameters>
                     <asp:ControlParameter ControlID="StatusDropDownList" Name="Status" 
            PropertyName="Text" Type="Char" />
            </SelectParameters>
    </asp:SqlDataSource>

您不需要 IF 语句,只需稍微修改一下 Where 子句,如下所示:

WHERE     (w.status = @status)
AND (
     (@status = 'C' AND entry_date >= DATEADD(DAY, -90 , GETDATE()))
     OR 
     (@status IN ('V','N'))
    )