2016-04-15 39 views
0

我有以下數據。根據sql查詢生成的組檢索多行的特定列

ColumnA ColumnB 
1234  1 
1234  2 
1234  3 
1235  2 
1236  2 
1237  1 
1237  2 
1238  1 
1238  3 
1238  5 

我需要輸出按下面,它只能說明在列1(例如ColumnA)

ColumnA ColumnB 
1234  1 
1234  2 
1234  3 
1237  1 
1237  2 
1238  1 
1238  3 
1238  5 

其實我通過下面的查詢得到的第一個表相同價值的物品,我如何修改它以按照最終表格顯示?

select ColumnA, ColumnB 
from TableX 
group by ColumnA, ColumnB 
--having COUNT(ColumnA) > 1 
--having COUNT(ColumnB) > 0 
order by ColumnA asc 

UPDATE

運行下面的查詢會得到如下表,但如果我能按照原來的要求也將是巨大的......

SELECT b.ColumnA 
(
    select ColumnA, ColumnB 
    from TableX 
    group by ColumnA, ColumnB 
    --having COUNT(ColumnA) > 1 
    --having COUNT(ColumnB) > 0 
    -- order by ColumnA asc 
) b 
group by b.ColumnA 
having COUNT(b.ColumnA) > 1 

結果查詢是:

ColumnA 
1234  
1237  
1238  

UPDATE

這就行!如果有任何其他的解決方案,請讓我知道...

SELECT c.* 
    FROM TableX c 
    WHERE c.ColumnA IN 
    (
    SELECT b.ColumnA 
    (
     select ColumnA, ColumnB 
     from TableX 
     group by ColumnA, ColumnB 
     --having COUNT(ColumnA) > 1 
     --having COUNT(ColumnB) > 0 
     -- order by ColumnA asc 
    ) b 
     group by b.ColumnA 
     having COUNT(b.ColumnA) > 1 
    ) 
+1

如果對這一問題有一個答案,它應該發佈爲*答案*。如果你有問題的答案,你可以自己發表答案。編輯一個問題*包括*答案是不好的形式。 (StackOverflow作爲Question and Answer站點運行,有問題發佈爲答案,以問題形式發佈的答案不是StackOverflow的方式,而且對於使用StackOverflow的人來說,這個問題仍然顯示爲* not *有一個可接受的答案,就好像一個合適的答案還沒有找到。(壞形式) – spencer7593

回答

0

如果我的理解是正確的,你想輸出行僅在columnA值被複制:

declare @tableX table 
(
    ColumnA int, 
    columnB int 
) 

insert into @tableX 
values 
(1234,  1), 
(1234,  2), 
(1234,  3), 
(1235,  2), 
(1236,  2), 
(1237,  1), 
(1237,  2), 
(1238,  1), 
(1238,  3), 
(1238,  5) 


select ColumnA, columnB 
from @tableX x 
where exists (select 1 from @tableX where ColumnA = x.ColumnA group by ColumnA having COUNT(*) > 1);