【问题标题】:SQL View Conditional SelectionSQL 查看条件选择
【发布时间】:2010-08-12 17:54:05
【问题描述】:

我正在尝试创建一个提取特定记录的视图。我遇到的问题是有 2 条记录可供选择,状态标志为 1 或 2。如果存在,它应该提取 1 记录,如果不存在,则提取 2 记录。

从一个角度来看这可能吗?

【问题讨论】:

  • 可以提供表的schema吗?

标签: sql sql-server-2005 view


【解决方案1】:

尝试按状态值排序,或分组并返回最小值

【讨论】:

    【解决方案2】:
    Select B.*
    FROM
        (Select 
           ID
           ,MIN(Flag) Flag
        From TableName
        Group by ID) A
        LEFT JOIN TableName B on A.ID=B.ID and A.Flag=B.Flag
    

    【讨论】:

      【解决方案3】:

      select top 1 并按状态标志对其进行排序。

      【讨论】:

      • 添加了标签,但它是 SQL Server 2005。
      【解决方案4】:
      select * from table
      where Status = 1
      
      union
      
      select * from table t
      where status = 2 
          and not exists (select * from table t2 where t.id = t2.id and Status = 1)
      

      请注意,当您有要比较的 id 列时,这种方法效果最好。这与 Faiz 所写的内容不同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-05
        • 2017-03-30
        • 2018-03-08
        • 2014-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多