簡體   English   中英

從多列中選擇時如何在一列中使用 DISTINCT

[英]How to use DISTINCT in one column when SELECTING from many columns

我試圖從兩個不同的視圖中選擇列,但我只想在一個特定的列上使用 DISTINCT 語句。 我認為使用 GROUP BY 語句會起作用,但它會引發錯誤。

SELECT DISTINCT
            [Act].[ClientId]
    ,       [Ref].[Agency]
    ,       [Act].[FundCode]
    ,       [Act].[VService]
    ,       [Act].[Service]
    ,       [Act].[Attended]
    ,       [Act].[StartDate]
FROM [dbo].[FS_v_CrossReference_ALL] AS [Ref] 
    INNER JOIN [dbo].[FS_v_Activities] AS [Act] ON [Ref].[VendorId] = [Act].[VendorId]
WHERE [Act].[StartDate] BETWEEN '1/1/2015' AND '12/31/2015'
GROUP BY [Act].[ClientId]

我想在[Act].[ClientId]上使用 DISTINCT 語句。 有沒有辦法做到這一點?

大概,你想要row_number()

SELECT ar.*
FROM (SELECT Act.*, Reg.Agency,
             ROW_NUMBER() OVER (PARTITION BY Act.ClientId ORDER BY ACT.StartDate DESC) as seqnum
      FROM [dbo].[FS_v_CrossReference_ALL] [Ref] JOIN
           [dbo].[FS_v_Activities] Act
           ON [Ref].[VendorId] = [Act].[VendorId]
      WHERE [Act].[StartDate] >= '2015-01-01' AND
            [Act].[StartDate] < '2016-01-01' 
    ) ar
WHERE seqnum = 1;

特別注意日期比較的變化:

  1. 日期采用標准格式(YYYY-MM-DD 或 YYYYMMDD)。
  2. BETWEEN被兩個不等式取代。 如果日期確實是具有時間分量的日期/時間,則這會使代碼健壯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM