簡體   English   中英

不同的子句在SQL Server 2005中不起作用

[英]Distinct Clause not working in SQL Server 2005

我有很多記錄,其中重復的taskid分配給了多個人,但是我想顯示不同的記錄,這意味着SQL輸出中只有一個taskid

下面是我的查詢無法正常工作給我解決方案

SELECT DISTINCT 
    taskid, taskname, person, userid, dept, date, status, monitor, 
    comments, monitor_comments, respondtime, assignedby, 
    reassigncomment, priority,date_complete, followup_date, re_status
FROM
    task
WHERE     
    (status IS NULL)

在您的情況下,結果是不同的,但不是您想要的,因為您只需要不同的任務ID,則應使用以下命令:

SELECT DISTINCT taskid
FROM         task
WHERE     (status IS NULL) 

那么結果將是不同的任務ID。

首先,如果在名為task的表中有一個名為taskid的列,我認為它應該是唯一的-除非它是一個緩慢變化的維度。

如果不是唯一的,那么您會提出一個問題:您要哪一行?

無論如何,SQL Server 2005都有一個名為row_number()的函數可以解決您的問題:

select t.*
from (select t.*, row_number() over (partition by taskid order by taskid) as seqnum
      from task
     ) t
where seqnum = 1;

這將為每個taskid返回一個任意行。 如果您有優先於一行的方式,請調整order by子句。

我添加了列優先級,其中該列的值是相同TASKID的1,其他將是0,所以我可以找到

SELECT DISTINCT taskid,taskname,person,userid,dept,date,status,monitor,comment,monitor_comments,responsetime,assignedby,reassigncomment,priority,date_complete,followup_date,re_status從任務WHERE
(狀態為NULL)和(優先級='1')

暫無
暫無

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

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