【发布时间】:2013-10-15 15:09:09
【问题描述】:
我有一个表,其中包含多个特定值的行。这是表结构:
NAME,NUMBER,STATUS,DESC,START_DATE,END_DATE
A,3,X,DetailsOfX,13-10-15,13-10-15
A,2,Y,DetailsOfY,13-10-15,13-10-15
A,2,Z,DetailsOfZ,13-10-15,13-10-15
A,1,X,DetailsOfX,12-10-15,12-10-15
我需要的输出是i.e.
A,3,X,DetailsOfX,13-10-15,13-10-15
A,2,Y,DetailsOfY-DetailsofZ,13-10-15,13-10-15
A,1,X,DetailsOfX,12-10-15,12-10-15
所以基本上我想从一个表中选择两行或多行之一,其中的数据来自两行的列(上面以粗体显示)。下面我尝试使用 JOIN 的查询返回 4 行。
SELECT A.NAME,A.NUMBER,B.STATUS,A.DESC||"-"||B.DESC,A.START_DATE,A.END_DATE
FROM TABLE A
JOIN (SELECT NUMBER,STATUS,DESC,START_DATE,END_DATE FROM TABLE WHERE NAME='A') B
ON A.NAME=B.NAME AND
A.NUMBER=B.NUMBER
有人可以帮我查询可行的查询吗?
谢谢
【问题讨论】:
-
这取决于您使用的 RDBMS。
-
在这种情况下,我认为您不需要 JOIN。
-
后端是AS400
-
您可能想要添加一个
AND A.STATUS <> B.STATUS,否则您将只是自行加入行并最终得到DetailsOfY-DetailsOfY -
除了 A 之外,该表还有更多的 NAME 行。添加此 条件会省略所有其他行,但仍然给我 2 行,其中一行正是我想要的。
标签: sql join db2 ibm-midrange db2-400