当前位置: 首页 > 知识库问答 >
问题:

如何在条件下使用SQL Server中的select语句

邓仲卿
2023-03-14

我想在C#中使用组合框对条件进行数据过滤,所以我使用了这个存储过程

CREATE PROCEDURE [dbo].[GET_FIXING_ON_CONDITIONS] 
    @BranchID int,
    @MachGroupID int,
    @FailGroupID int,
    @FailID int,
    @MachNo varchar(50),
    @DateFrom date,
    @DateTO date
AS
    SELECT tbBranches.BranchName,
           tbMachines.MachNo,
           tbMachines.MachType,
           tbMachinesGroups.MachGroupName,
           tbFails.FailName,
           tbFailsGroups.FailGroupName,
           tbFailsType.FailTypeName,
           tbFixing.FixDate,
           tbFixing.FixDetails,
           tbFixing.FixPerson
    FROM tbMachines
         INNER JOIN tbFixing ON tbMachines.MachNo = tbFixing.FixMachNo
                            AND tbMachines.BranchID = tbFixing.BranchID
         INNER JOIN tbFailsGroups ON tbMachines.BranchID = tbFailsGroups.BranchID
         INNER JOIN tbFailsType ON tbMachines.BranchID = tbFailsType.BranchID
         INNER JOIN tbFails ON tbFixing.FixFailID = tbFails.FailID
                           AND tbFixing.BranchID = tbFails.BranchID
                           AND tbFailsGroups.FailGroupID = tbFails.FailGroupID
                           AND tbFailsGroups.BranchID = tbFails.BranchID
                           AND tbFailsType.FailTypeID = tbFails.FailType
                           AND tbFailsType.BranchID = tbFails.BranchID
         INNER JOIN tbMachinesGroups ON tbMachines.MachGroupID = tbMachinesGroups.MachGroupID
                                    AND tbMachines.BranchID = tbMachinesGroups.BranchID
         INNER JOIN tbBranches ON tbMachines.BranchID = tbBranches.BranchID
                              AND tbFixing.BranchID = tbBranches.BranchID
    WHERE tbBranches.BranchID = @BranchID
      AND tbMachinesGroups.MachGroupID = @MachGroupID
      AND tbFailsGroups.FailGroupID = @FailGroupID
      AND tbFails.FailID = @FailID
      AND tbMachines.MachNo = @MachNo
      AND tbFixing.FixDate >= @DateFrom
      AND tbFixing.FixDate <= @DateTO;

参数由7个组合框补偿,但问题是我必须选择(所有)参数值来显示数据,这不是必需的,我想要的是显示数据,一旦我从任何组合框中选择(任何)值

共有1个答案

姜天宇
2023-03-14

通常,您可以通过将null传递给用户未设置的任何参数来实现这一点,并且查询遵循以下模式:

WHERE (@BranchID IS NULL OR tbBranches.BranchID = @BranchID)
AND (MachGroupID IS NULL OR tbMachinesGroups.MachGroupID = @MachGroupID)
AND ...
 类似资料:
  • 问题内容: 我正在使用MySQL,并且想在SQL中执行一种三元语句,例如: 结果将类似于: 如何做到这一点? 问题答案:

  • 问题内容: 我有一个分组的SQL选择查询。我想对groupby语句之后的所有记录进行计数。有没有一种方法可以直接从sql?例如,有一个包含用户的表格,我想选择不同的城镇和用户 总数 我想有一列包含所有城镇,另一列包含所有行中的用户数。 共有3个镇和58个用户的结果示例是: 问题答案: 这将完成您想要的操作(城镇列表,以及每个城镇中的用户数量): 使用时,您可以使用大多数聚合函数。 更新 (对问题和

  • 是否可以在 SQL SERVER 中的事务中使用 SELECT 语句锁定行?我想锁定该行,以便外部的其他事务无法访问该行。 提交或回滚事务后,应释放该行。这就是我的意思。。。 有人有建议吗?我应该执行 UPDATE 语句来锁定该行吗? 请不要将此问题标记为重复问题。因为,我不是在问UPDATE语句,而是在问SELECT 编辑:我试图“设置事务隔离级别串行化”,但这锁定了太多东西。我的SP很大,它有

  • 问题内容: 我要插入具有自动递增键字段的SQLServer表。(我相信这在SQLServer中称为IDENTITY列。) 在Oracle中,我可以使用RETURNING关键字为INSERT语句提供一个类似于SELECT查询的结果集,该结果集将返回生成的值: 如何在SQLServer中完成此操作? 奖励 :好的,到目前为止,很好的答案,但是,如果可能的话,如何将其放入单个语句中?:) 问题答案: 通

  • 通过选择必须返回html标记的选项 如果是捐赠者名称,则为else

  • 问题内容: 这是问题的简化:我有一个看起来像这样的选择: 并返回的数据快照看起来像这样 我想做的是,如果工作组是内部的,则选择不显示受让人的名称。而是显示工作流。 因此,例如,我想要实现的结果将是这样的: 我希望这是有道理的?基本上是一个条件选择,可以检测某个列是否包含某个值,然后用[whatever]替换另一个列的值。 提前致谢! 编辑我想实现这样的事情: 问题答案: 您没有提到您的DBMS,但