2013-01-16 111 views
2

我有一张表格,其中可以有两个报纸发布日期,用于在NewsPaperDate下插入一列中的特定值。所有剩余的值都会被重复。现在我必须编写一个查询,其中两个NewsPaperDate值应该显示在两列NewsPaperDate1和NewsPaperDate2下的单行中,其余值为enter image description here。任何人都可以帮忙吗? DataBase是Sql Server enter image description here 表结构是在不同的行中显示两列的重复值

+0

这可以用一个表来进行自连接。你使用的是哪个数据库? – dwurf

+0

可以提供表结构吗?带有示例数据 –

回答

4

您需要将表加入到它自己。这样做有不同的方式,但根据你的截图中,你可以这样做:

select 
    a.yonja_no, 
    a.newspaper_date as newspaperdate1, 
    b.newspaper_date as newspaperdate2 
from newspapertable a, newspapertable b 
where a.yonja_no = b.yonja_no 
and a.newspapere_s > b.newspapere_s 
; 

(编辑:见注释)

+0

但是,此查询通过两次交换列来显示相同​​的结果。意思是第一个结果是newspaperdate1 = 09/01/2013,newspaperdate2 = 05/01/2013,第二个结果是newspaperdate1 = 05/01/2013,newspaperdate2 = 09/01/2013。如何只显示一列 – user1947927

+0

哦对。改变这个:'和a.newspapere_s!= b.newspapere_s'到这个:'和a.newspapere_s> b.newspapere_s' – dwurf

+0

ohn thnx它很有效thnx .. – user1947927

2

检查fiddle link查询执行与样本数据

create table tab1(newspaperDate number,b number,c number); 
INSERT INTO tab1 VALUES(1,2,3); 
INSERT INTO tab1 VALUES(2,2,3); 
INSERT INTO tab1 VALUES(3,3,4); 


SELECT t1.newspaperDate AS date1,t2.newspaperDate AS date2 , t1.b AS b1,t1.c AS c1 FROM tab1 t1 , tab1 t2 
WHERE t1.newspaperDate < t2.newspaperDate AND t1.b=t2.b ; 

OUTPUT

| DATE1 | DATE2 | B1 | C1 | 
--------------------------- 
|  1 |  2 | 2 | 3 | 
+1

很难遵循!更改列名以符合提问者的问题,我会+1 – dwurf

+0

@dwurf:查看更新后的答案。 –