【问题标题】:How to select distinct column from my table?如何从我的表中选择不同的列?
【发布时间】:2015-11-05 06:34:58
【问题描述】:

我有两张桌子可以使用。第一个表#CustomerList 我手动用值初始化。然后我创建第二个表#CustomerListWithRank_Id,它基于第一个表#CustomerList

第一个表和第二个表之间的唯一区别是第二个表 #CustomerListWithRank_Id 有一个列,它为每一行提供行号,当我循环遍历该表时,我在 SQL 代码中进一步使用它。

所以我遇到的问题是我只想使用列 [FileName] 中的唯一值初始化 #CustomerListWithRank_Id,我该怎么做?

SELECT '3004' Customer_No,'831001' DDD_Reference_No,'varer831.csv' [FileName]
INTO #CustomerList -- DROP TABLE #CustomerList
UNION ALL SELECT '3002' Customer_No,'199001' DDD_Reference_No,'varer199.csv' [FileName]
UNION ALL SELECT '3003' Customer_No,'199002' DDD_Reference_No,'varer199.csv' [FileName]

-

SELECT *, ROW_NUMBER() OVER (ORDER BY Customer_No) AS 'Rank_Id'
INTO #CustomerListWithRank_Id --DROP TABLE #CUstomerListWithRank_ID
FROM #CustomerList

如果我在上面的查询中使用 GROUP BY [FileName],我会收到以下错误:

Msg 8120, Level 16, State 1, Line 1
Column '#CustomerList.Customer_No' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

【问题讨论】:

    标签: sql sql-server group-by distinct


    【解决方案1】:

    这是你需要的吗?

    select *, ROW_NUMBER() OVER (ORDER BY Customer_No) AS 'Rank_Id'
    INTO #CustomerListWithRank_Id 
    from
    (
        SELECT max(Customer_No) Customer_No, max(DDD_Reference_No) DDD_Reference_No, FileName
        FROM #CustomerList
        group by FileName
    ) t
    

    【讨论】:

      【解决方案2】:

      这是你需要的吗

      SELECT * INTO #CustomerListWithRank_Id From
      (SELECT *, ROW_NUMBER() OVER (PARTITION BY FileName Order by Customer_No)  AS RowNum FROM CustomerList)
      

      【讨论】:

        猜你喜欢
        • 2017-09-21
        • 2016-12-19
        • 1970-01-01
        • 2022-11-01
        • 1970-01-01
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 2011-04-24
        相关资源
        最近更新 更多