【问题标题】:Join 1 to Many from the same table and append to row从同一个表中加入 1 到多个并附加到行
【发布时间】:2011-01-13 20:22:06
【问题描述】:

SQL Server 2005

1 表

ID Project_id   
-------------
1  1           
1  2           
1  2           
1  3

2 个查询

第一个查询根据 ID 获得唯一结果

ID 
---
1
2
3
4
5

第二次查询按 ID 汇总 project_id 的数量

ID Project_id total
--------------------
1  1          1
1  2          2
1  3          1

我正在尝试组合查询,以便结果像这样在一行中

ID Project_id _1 Project_id_2 Project_id_3
-------------------------------------------
1  1             2            1

这可能吗?

【问题讨论】:

  • 当有更多相关项目时,这不会很好地扩展。向下列出值更具可扩展性。
  • 我必须在报告中连续显示结果。每个 ID 可以有大约 5 个项目。
  • 还有1000个ID。

标签: sql sql-server sql-server-2005


【解决方案1】:

好吧,恐怕您将不得不使用动态 sql,因此请务必先访问此link。一旦你这样做了,你可以试试这个:

DECLARE @Project VARCHAR(MAX), @Query VARCHAR(MAX)

SELECT @Project = COALESCE(@Project + ',', '') + QUOTENAME('Project_Id_' + CAST(Project_id AS VARCHAR))
FROM Project
GROUP BY Project_id

SET @Query = '
SELECT Id, '+@Project+'
FROM (SELECT Id, ''Project_Id_'' + CAST(Project_id AS VARCHAR) Project_Id, 1 AS Num FROM Project) P
PIVOT(SUM(Num) FOR Project_Id IN ('+@Project+')) PV'

EXEC(@Query)

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 2023-03-30
    • 1970-01-01
    • 2015-04-04
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2014-05-18
    相关资源
    最近更新 更多