2017-06-06 60 views
0

我正在構建報表,其中顯示了不同部門中一個工單的各個部分。 考慮下面以特定方式對數據進行分組

work_order part dept_code datein 
aaaa  11 XXX  20/01/2017 
aaaa  12 BBB  22/01/2017 
bbbb  12 XXX  20/01/2017 
bbbb  15 XXX  22/01/2017 
cccc  13 XXX  20/01/2017 
cccc  17 XYX  20/01/2017 

表現在我想組中,只有工作才能與不同dept_code應該出現這樣的方式這個數據。 結果

work_order part dept_code datein 
aaaa  11 XXX  20/01/2017 
aaaa  12 BBB  22/01/2017 
cccc  13 XXX  20/01/2017 
cccc  17 XYX  20/01/2017 

回答

2

使用標識那些work_order項目其中的部門數大於1的子查詢:在

select * from work 
where work_order in 
    (select work_order 
    from work w2 
    group by w2.work_order 
    having count(w2.dept_code) > 1 
) 
2

像這樣的事情

SELECT work_order, part, dept_code, datein 
FROM [Table] 
WHERE work_order in 
(
    SELECT work_order 
    FROM [Table] 
    GROUP BY work_order 
    HAVING COUNT(DISTINCT dept_code) > 1 
) 
+0

爲什麼使用'distinct work_order'? 'GROUP BY work_order'無論如何都會產生獨特的work_orders,而不是? –

+1

好點,我修改了答案。 – Simon

2

你可以使用count() ()如下:

Select * from (
    Select *, cnt = Count(dept_code) over(partition by work_order, dept_code) from yourTable ) a 
    Where a.cnt = 1 
+1

窗口函數中'distinct'不起作用。 –

相關問題