如何在sql server中组合n ^ n

时间:2013-06-07 06:23:10

标签: sql-server

我希望数据与image中显示的一样 这是n ^ n个结果。这里是V1,V2& V3显示为列名。 enter image description here

请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

试试这个:

-- DROP TABLE Vendors, Products
CREATE TABLE Vendors (Vendor VARCHAR(10) PRIMARY KEY)
CREATE TABLE Products (Product VARCHAR(10) PRIMARY KEY)
GO
INSERT INTO dbo.Vendors VALUES ('V1'),('V2'),('V3')
INSERT INTO dbo.Products VALUES ('1'),('2'),('3')

DECLARE @SQL VARCHAR(8000)=(
    SELECT 'SELECT '+SUBSTRING(CONVERT(VARCHAR(8000),(
        SELECT ','+SUBSTRING(CONVERT(VARCHAR(8000),(
            SELECT '+CASE WHEN P'+Product+'='''+Vendor+''' THEN '''+Product+''' ELSE '''' END'
            FROM dbo.Products
            FOR XML PATH(''), TYPE
        )),2,8000)+' AS '+Vendor
        FROM dbo.Vendors
        FOR XML PATH(''),TYPE
     )),2,8000)
    +' FROM '+SUBSTRING(CONVERT(VARCHAR(8000),(
        SELECT ',(VALUES '+SUBSTRING(CONVERT(VARCHAR(8000),(
            SELECT ',('''+Vendor+''')'
            FROM dbo.Vendors
            FOR XML PATH (''), TYPE
        )),2,8000)+') P'+Product+' (P'+Product+')'
        FROM dbo.Products
        FOR XML PATH(''), TYPE
    )),2,8000)
)
EXEC(@SQL)

勒兹