我有一个相对简单的数据透视/转换查询,如下所示:
TRANSFORM Sum(T1.VALUE) As SumOfVal
SELECT T1.DATE, T1.HOUR
FROM T1
WHERE (T1.DATE = #1/1/2010#) AND
(T1.NAME IN ("name1", "name2")) AND
(T1.TYPE IN ("type1", "type2"))
GROUP BY T1.DATE, T1.HOUR
PIVOT T1.NAME + " " + T1.TYPE
返回给我这样的东西:
DATE | HOUR | name1 type1 | name1 type2 | name2 type1 | name2 type2
------------------------------------------------------------------------
1/1/2010 | 1 | 222.22 | 123.11 | 1241.23 | 133124
1/1/2010 | 2 | 252.22 | 121.11 | 121.23 | 122150
等等。现在,在另一个表(具有类似的布局)中,我有更多的读数,我想作为另一列加入到查询的末尾。 DATE
和HOUR
会完全匹配,我可以在表格中手动指定要使用的名称/类型。
我遇到的问题是,如何将其添加到查询中?我尝试INNER JOIN
FROM
子句中的两个表,然后将列名添加到SELECT
子句中,但它抱怨字段名称不是聚合函数的一部分。我还尝试将其添加到TRANSFORM
子句(和PIVOT
子句)中,但我认为您不能为它们指定多个字段。
这可以在使用SQL的单个查询中执行,还是需要单独执行这两个查询?
最后一个注意事项 - 在INNER JOIN
表格T1
上加T2
日期/小时值后,查询仍然有效(应该如此)。我只是不知道如何包含实际读数/值,因此它显示在结果中......
答案 0 :(得分:1)
为什么不将它作为子查询并加入适当的ID?
例如
select a.*, b.extracolumn
from othertable b
join ( ... ) a
on a.ID = b.ID
由于上述查询中的group by
,您收到的错误。如果您作为子查询完整地加入它,则不应该有同样的问题。