将sql表的行与同一表的所有其他行联接
我是SQL Server查询的初学者。我已分配给一个任务,在该任务中我需要自联接表 上面是表格结构。我需要的结果如下。我尝试过使用自连接、子查询等,但没有得到结果将sql表的行与同一表的所有其他行联接,sql,sql-server,Sql,Sql Server,我是SQL Server查询的初学者。我已分配给一个任务,在该任务中我需要自联接表 上面是表格结构。我需要的结果如下。我尝试过使用自连接、子查询等,但没有得到结果 ReqStatusId ReqStatus ChildId ChildReqStatus 1 Open 2 On Hold 1 Open 3 Closed 2 On Hold 1 Open
ReqStatusId ReqStatus ChildId ChildReqStatus
1 Open 2 On Hold
1 Open 3 Closed
2 On Hold 1 Open
2 On Hold 3 Closed
3 Closed 1 Open
3 Closed 2 On Hold
结果应该是:一个表中的每一行都应该与所有其他行连接起来,这样就可以得到两个表之间的笛卡尔积
Select *
From YourTable A
CROSS JOIN YourTable B
Where A.ReqStatusId <> B.ReqStatusId
你想要得到的是通过交叉连接来实现的。如果您选择该表两次,将得到所需的结果
select a.reqstatusid, a.reqstatus, b.reqstatusid as childreqstatusid,
b.reqstatus as childreqstatus
from table a, table b
where a.reqstatusid <> b.reqstatusid
您应该在ReqStatusId ReqStatusId上执行联接:
WITH Tbl(ReqStatusId, ReqStatus) AS(
SELECT 1, 'Open' UNION ALL
SELECT 2, 'On Hold' UNION ALL
SELECT 3, 'Closed'
)
SELECT
t1.*,
ChildId = t2.ReqStatusId,
ChildReqStatus = t2.ReqStatus
FROM Tbl t1
INNER JOIN Tbl t2
ON t2.ReqStatusId <> t1.ReqStatusId
select a.reqstatusid, a.reqstatus, b.reqstatusid,
b.reqstatus
from table a
inner join table b on A.ReqStatusId = B.ReqStatusId
Where A.ReqStatusId <> B.ReqStatusId