Sql server 将所有行与同一表上的其他行匹配的sql查询

Sql server 将所有行与同一表上的其他行匹配的sql查询,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一张桌子放着我的产品和服务。我希望将每种产品与我的服务相匹配,然后根据我的产品为我的服务指定基本价格 我的桌子如下 ID TypeID Title ========================= 1 1 Product1 2 1 Product2 3 1 Product3 4 2 Service1 5 2 Service2 6 2 Service3 我想把这张桌子还回去 ProductID ServiceID Product

我有一张桌子放着我的产品和服务。我希望将每种产品与我的服务相匹配,然后根据我的产品为我的服务指定基本价格

我的桌子如下

ID  TypeID  Title
=========================
1   1   Product1
2   1   Product2
3   1   Product3
4   2   Service1
5   2   Service2
6   2   Service3 
我想把这张桌子还回去

ProductID   ServiceID   ProductTitle    ServiceTitle
=========================================================
1       4       Product1    Service1
1       5       Product1    Service2
1       6       Product1    Service3
2       4       Product2    Service1
2       5       Product2    Service2
2       6       Product2    Service3
3       4       Product3    Service1
3       5       Product3    Service2
3       6       Product3    Service3
如何使用Ms SQL 2008做到这一点???

试试以下方法:

SELECT
   P.ID ProductID, S.ID ServiceID, P.Title ProductTitle, S.Title ServiceTitle
FROM
(SELECT ID, Title
FROM tbl
WHERE TypeID = 1) P
CROSS JOIN
(SELECT ID, Title
FROM tbl
WHERE TypeID = 2) S
ORDER BY P.ID, S.ID

交叉联接
返回两个表的笛卡尔乘积

SELECT  a.ID ProductID, 
        a.Title ProductTitle, 
        b.ID ServiceID, 
        b.Title ServiceTitle
FROM    tableName a
        CROSS JOIN tableName b
WHERE   a.TypeID = 1 AND
        b.TypeID = 2
ORDER   BY a.ID, b.ID

以下查询可能对您有所帮助:

SELECT Product.ProductID , Product.ProductTitle , ProductType.Title
FROM dbo.Product INNER JOIN dbo.ProductType 
ON Product.ProductTypeID = ProductType.ID

您可能需要一个join语句,但是如果没有第二个表,我们就不能给您一个示例