sql - SUM 函数中的 Select 语句

标签 sql

我有两张 table 。第一个表 (TableA) 有一些列,如 week1、week3、week4、Week7(动态)以及一些静态列,如 orgno、employeeID、员工姓名。

所有动态列都存在于另一个表 (TableB) 中。

现在我需要进行这样的查询

SELECT OrgNo, 
SUM(SELECT ColName FROM TableB WHERE id=1), 
SUM(SELECT ColName FROM TableB WHERE id=2),
SUM(SELECT ColName FROM TableB WHERE id=3),
SUM(SELECT ColName FROM TableB WHERE id=4),
FROM TableAO
GROUP BY OrgNo

我正在使用 SQL 2000。 提前致谢。

例子:

*

TableA:*
**Orgno   EmployeeID   EmployeeName   Week1   week3   week4   Week7** 
(1         1            XX             0       5       4       3)
(1         2            YY             1       6       0       2)
(2         1            XX             0       5       4       3)
(1         3            ZZ             1       6       0       2)

*TableB:*
**ID   Name**
(1    Week1)   
(2    Week3)   
(3    Week4)   
(4    Week7)

*Desire Output:* 
**Orgno   Week1   week3   week4   Week7**    
(1        2       17       4       7)
(2        0        5       4       3)

最佳答案

这里不需要包含TABLE B,只用第一个表就可以得到你想要的结果。

     SELECT 
          Orgno,
          SUM(Week1) Week1,
          SUM(Week3) Week3, 
          SUM(Week4) Week4, 
          SUM(Week7) Week7
    FROM 
          TableA 
    GROUp BY 
          Orgno

更新

根据您的评论,我了解到您不知道第一个表的列名,而您想从第二个表中获取该列名,在这种情况下您需要使用动态 SQL。 您可以在单个查询中获取它并与动态 sql 字符串连接,而不是触发多个查询来 gt 每一列。你可以尝试这样的事情,

declare @sql  varchar(max)
set @sql = 'SELECT Orgno,' 

declare @tbl varchar(100)
set @tbl = 'tableB' -- put your table name here

SELECT @sql = @sql +'SUM(' + name + '),'
FROM tablB
WHERE Id IN(1,2,3,4) 

set @sql = LEFT(@sql, LEN(@sql) - 1)
set @sql = @sql + ' FROM ' + @tbl + ' Group BY Orgno'

EXEC (@sql)

More info on dynamic sql .

关于sql - SUM 函数中的 Select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28711832/

相关文章:

sql - 在特定时间间隔内创建的 Postgresql 记录百分比

mysql - View + Left Join 在 MySQL 5 中返回错误 1054

sql - 从 SQL Server 获取随机数据但没有重复值

SQL Server 2000 XML 路径 ('') 错误

sql - 在底部添加总计

sql - PostgreSQL 查询未按预期返回结果

Mysql:将选择的输出作为表中的新列

php - mysql_escape_string 整个帖子数组?

java - SQL/HQL查询: find object that has a list of objects that matchs some parameters

sql - T-SQL 动态枢轴