Tsql 将Access Pivot表转换为SQL Server

Tsql 将Access Pivot表转换为SQL Server,tsql,ms-access,Tsql,Ms Access,将MS Access数据透视表转换为SQL Server时遇到问题。希望有人能帮上忙 TRANSFORM First(contacts.value) AS FirstOfvalue SELECT contacts.contactid FROM contacts RIGHT JOIN contactrecord ON contacts.[detailid] = contactrecord.[detailid] GROUP BY contacts.contactid PIVOT contactrec

将MS Access数据透视表转换为SQL Server时遇到问题。希望有人能帮上忙

TRANSFORM First(contacts.value) AS FirstOfvalue
SELECT contacts.contactid
FROM contacts RIGHT JOIN contactrecord ON contacts.[detailid] = contactrecord.[detailid]
GROUP BY contacts.contactid
PIVOT contactrecord.wellknownname
;
编辑:回复一些评论

联系人表有三个字段

contactid | detailid | value  |
1             1          Scott
contactrecord有点像

detailid  | wellknownname
1         |  FirstName
2         |  Address1 
3         |  foobar
contractrecord是动态的,用户可以随时创建要添加到联系人的字段

访问查询退出

contactid  | FirstName | Address1 | foobar
1          | Scott     |   null   |  null
这是众所周知的名字的支点。这里的关键是列的数量是动态的,因为用户可以随时为联系人创建另一个字段。由于不熟悉透视表,我想知道如何在sql server中重新创建此访问查询

至于转换。。。这是一个内置的访问功能。有关它的更多信息。First()将只获取匹配行上的第一个结果


我希望这有帮助,并感谢所有的帮助

我快速搜索动态数据透视表时会发现

在他在页面上的最后一个查询中对事物进行重命名后,我得出以下结论:

DECLARE @PivotColumnHeaders VARCHAR(max);
SELECT @PivotColumnHeaders = COALESCE(@PivotColumnHeaders + ',['+ CAST(wellknownname as varchar) + ']','['+ CAST(wellknownname as varchar) + ']')
FROM contactrecord;

DECLARE @PivotTableSQL NVARCHAR(max);

SET @PivotTableSQL = N'
    SELECT *
    FROM (
        SELECT 
            c.contactid,
            cr.wellknownname,
            c.value
        FROM contacts c
        RIGHT JOIN contactrecord cr
        on c.detailid = cr.detailid
    ) as pivotData
    pivot(
        min(value)
        for wellknownname in (' + @PivotColumnHeaders +')
    ) as pivotTable
'
;

execute(@PivotTableSQL);

尽管它很难看,但它可以完成这项工作

如果您将转换替换为某个标准命令,它将更容易提供帮助。如果我们看到您的数据和您的预期output@t-clausen.dk:根据我在这里学到的,似乎
TRANSFORM
是用于数据透视的标准命令(在MS Access中),删除它,或者用相应的T-SQL构造替换它,就是这个问题。但是我同意你的观点,这些例子会非常有帮助。@Scott:不是所有人,可能也不是很多人,都对MS Access和T-SQL非常了解,能够帮助你@t-clausen.dk是正确的:发布示例数据和输出将真正帮助我们这些对t-SQL非常熟悉的人提出一个好的解决方案。@t-clausen.dk我不担心从SQL方面进行排序。所有内容都被推到一些.NET代码中。然而,下一个挑战是如何看待这一点。