0

我想要如图所示的数据
这是 n^n 个结果。这里 V1、V2 和 V3 显示为列名。 在此处输入图像描述

请帮我。提前致谢。

4

1 回答 1

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)

拉兹万

于 2013-06-07T07:24:54.003 回答