【问题标题】:Get distinct column values from from first three columns and give priority to fourth column value SQL从前三列中获取不同的列值并优先考虑第四列值SQL
【发布时间】:2015-03-12 14:03:05
【问题描述】:

我想从前三列中获取不同的列值,第四列包含三态值,即1,0,Null,第四列的值按上述顺序取。

例如,如果我的表格数据是这样的

前三列被分组,第四列值被优先考虑

任何帮助将不胜感激

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您需要将MAXGroupBY 子句一起使用。

     SELECT
         Proj,
         sponser,
         Id,
         Max(visible) AS MaxVisible
     FROM
          tableName
     GROUP BY
       Proj,Sponser,Id
    

    【讨论】:

    • 很高兴它有帮助。编码快乐!
    【解决方案2】:

    试试这个,

    SELECT Proj,
           Sponsor,
           ID,
           Visible
    FROM   (SELECT Proj,
                   Sponsor,
                   ID,
                   Visible,
                   Row_Number()
                     OVER(
                       Partition BY PRoj, Sponsor, ID
                       ORDER BY Visible DESC) AS RN
            FROM   #Yourtable)A
    WHERE  RN = 1 
    

    【讨论】:

      【解决方案3】:

      获得预期结果的多种方法,已经发布的答案是正确的。我只是想显示使用 CTE 来获得相同的结果。

      基于您的示例

      请找到以下查询以获得所需的输出。是的,CTE 的成本将低于嵌套查询。

      CREATE TABLE  project (proj VARCHAR(5), Sponsor VARCHAR(5), ID INT, visible INT null) 
      
      INSERT INTO project 
      SELECT 'A', 'a', 123, NULL
      UNION 
      SELECT 'A', 'a', 123, 1
      UNION 
      SELECT 'A', 'a', 123, 0
      UNION
      SELECT 'B', 'b', 345, NULL
      UNION 
      SELECT 'B', 'b', 345, 1
      UNION 
      SELECT 'B', 'b', 345, 0
      UNION
      SELECT 'C', 'c', 567, 0
      UNION 
      SELECT 'D', 'd', 897, 0
      UNION 
      SELECT 'D', 'd', 897, 1
      UNION 
      SELECT 'E', 'e', 765, NULL 
      
      
      ;WITH CTE AS
      (
      SELECT proj, Sponsor,ID,visible, ROW_NUMBER() OVER (PARTITION BY proj ORDER BY visible DESC) AS Rank 
      FROM project
      ) 
      SELECT  proj, Sponsor,ID,visible 
      FROM CTE 
      WHERE Rank = 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 2011-04-17
        • 1970-01-01
        • 1970-01-01
        • 2021-12-08
        • 2020-04-16
        • 2021-07-30
        相关资源
        最近更新 更多