Sql 基于连接ID在两个不同列中显示值
我正在尝试为SQL Server创建一个select语句,如标题所示。 我的数据是:Sql 基于连接ID在两个不同列中显示值,sql,sql-server,Sql,Sql Server,我正在尝试为SQL Server创建一个select语句,如标题所示。 我的数据是: ID | JoiningID | Value | 1 | 1 | 10 2 | 1 | 11 3 | 2 | 10 4 | 2 | 10 5 | 3 | 15 6 | 3 | 9 我试图输出三列,如下所示: JoiningID | Column1值| Column2值 1 | 10 | 11 2 | 10 | 10 3 | 15 | 9 这样做的条件是,它需要位于select语句中,而不
ID | JoiningID | Value |
1 | 1 | 10
2 | 1 | 11
3 | 2 | 10
4 | 2 | 10
5 | 3 | 15
6 | 3 | 9
我试图输出三列,如下所示:
JoiningID | Column1值| Column2值
1 | 10 | 11
2 | 10 | 10
3 | 15 | 9
这样做的条件是,它需要位于select语句中,而不是where语句中
谢谢您的时间。您可以枚举这些值,然后使用
pivot
或条件聚合:
select joiningid,
max(case when seqnum = 1 then value end) as value1,
max(case when seqnum = 2 then value end) as value2
from (select t.*, row_number() over (partition by joiningid order by id) as seqnum
from t
) t
group by joiningid;
您可以枚举这些值,然后使用
pivot
或条件聚合:
select joiningid,
max(case when seqnum = 1 then value end) as value1,
max(case when seqnum = 2 then value end) as value2
from (select t.*, row_number() over (partition by joiningid order by id) as seqnum
from t
) t
group by joiningid;
你可以这么做
SELECT * FROM TABLE1
WHERE JoiningID IN(SELECT JoiningID from TABLE2)
或者
或者,你可以做一个连接或左连接..你可以简单地做
SELECT * FROM TABLE1
WHERE JoiningID IN(SELECT JoiningID from TABLE2)
或者
或者,您可以执行连接或左连接..如果joiningid的值超过2个怎么办?@vkp抱歉,从来没有超过2个值。什么决定了哪个值应该在
Column1 value
中,哪个值应该在Column2 value
中?如果joiningid的值超过2个怎么办?@vkp道歉,从来没有超过2个值。什么决定了哪个值应该在列1值中
,哪个值应该在列2值中
?