【问题标题】:Cross Tab Query Required SQL 2000需要跨表查询 SQL 2000
【发布时间】:2010-10-01 08:38:15
【问题描述】:

我已经用谷歌搜索过这个

I have a Table with following structure in SQL 2000 ID ContactName Designation 1 A CEO 2 B ABC 3 C DEF 4 D GHI

我需要如下输出


ContactName1 Contactname2 ContactName3 ContactName4
 A CEO        B ABC         C DEF         D GHI

有什么建议吗?

【问题讨论】:

标签: sql crosstab


【解决方案1】:

在我看来,很多示例都是针对涉及聚合的交叉表查询,而您的似乎不需要。虽然我不一定宽恕动态 SQL,但下面应该会给你想要的结果。

Create table #Contacts (id int)
Declare @ContactTypes int
Declare @CAD varchar(100)
Declare @I int
Declare @sql nvarchar(4000)
Set @i = 1
Select @ContactTypes =   
Sum(sub.Types) 
from ( Select Count(1) as Types from contacts
group by ContactName, Designation) as sub
Print @ContactTypes
While @i <= @ContactTypes
Begin
    set @sql = 'alter table #Contacts Add  ContactName' + 
    Cast(@I as varchar(10)) + ' varchar(100)'
    exec sp_executesql @sql
    Set @I = @i + 1
End
Insert into #Contacts (id) values (1)
Set @i = 1
Declare crsPivot  cursor 
for Select ContactName + ' ' + Designation
from contacts
open crsPivot
Fetch next from crsPivot into @CAD
While (@@Fetch_Status = 0)
Begin   
    Set @sql = 'Update  #Contacts  set ContactName' 
    + Cast(@I as varchar(10)) +' = ' + quotename(@CAD,'''')
    exec sp_executesql @sql
    Set @i = @i + 1
    Fetch next from crsPivot into @CAD
End
close crsPivot
Deallocate crsPivot
select * From #Contacts

【讨论】:

  • 非常感谢,真的..谢谢
【解决方案2】:

您需要使用PIVOTED Table

【讨论】:

  • 我在 SQL 2000 中有我的数据库
  • 该链接不是特定于 SQL Server 2000 的吗?
  • 我的表架构有varchar列,链接中的例子有int列..可以理解
  • 指定列表是固定的还是任意的?
【解决方案3】:

这也适用于 2000 - wg。没有枢轴

http://www.sqlteam.com/item.asp?ItemID=2955

【讨论】:

    【解决方案4】:

    又一个 SQL Cross Tab proc http://johnmacintyre.ca/codespct.asp

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 2011-10-13
      • 2011-11-20
      • 1970-01-01
      相关资源
      最近更新 更多