我想从客户表,合同支出表和合同名称表中选择数据。我的表是这个样子dynamic pivot sql
Customers
CustomerID CustomerName Address etc
1 "ABC Corp" "123 Here Ave"
2 "Acme Corp" "101 Lets Ave"
ContractTypes
ContractTypeID ContractName
1 "Website Hosting"
2 "Domain Hosting"
3 "Email Hosting"
ServiceSpend
ServiceSpendID ContractTypeID CustomerID Spend
1 2 1 5.99
2 1 1 5.99
3 1 2 9.99
我想下表产生
CustomerID CustomerName Address DomainHosting WebsiteHosting
1 "ABC Corp" "123 Here Ave" 9.99 5.99
目前我有工作了下面的SQL语句,但我需要能够动态地定义列,因为我们需要能够额外合约名称添加到数据库和客户仍然报告花
select *
from
(
SELECT
Customers.CustomerID, Customers.ContactName, Customers.Address, ContractTypes.ContractName AS ContractName, ServiceSpend.Spend
FROM
Customers INNER JOIN
ServiceSpend ON Customers.CustomerID = ServiceSpend.CustomerID
INNER JOIN
ContractTypes ON ServiceSpend.ContractTypeID = ContractTypes.ContractTypeID
) src
pivot
(
sum(spend)
for ContractName in ([Website Hosting],[Domain Hosting])) piv;
有谁知道我可以补充我的专栏dynami凯莉
我不认为你需要在这里一个支点,为什么不只是做一组,并使用SUM来的总花场? – Chuck
我该怎么做?是否会为我有的ContractNames列表创建列? – user1711657
回想我的问题,我想我犯了一个错误,我想制作一个这样的表格 '客户ID,客户名称,地址,域名托管,网站托管 1,“ABC Corp”,“123 Here Ave” ,9.99,5.99' – user1711657