使用ODBC的Power Query中的SQL

时间:2016-07-27 13:22:31

标签: teradata powerquery

我有一个包含以下列的表:

Account_No, Start_Date, End_Date

我使用 SQL 通过 ODBC 选择命令将此表下载到电源查询中。

现在,我想从另一个表中的Start_DateEnd_Date获取上表中给出的所有帐户的交易总和和计数。例如Transaction_Table。我该怎么做才能得到我想要的结果。

此致

KAM

3 个答案:

答案 0 :(得分:1)

此时您可能根本不需要Power Query。 假设您的数据库服务器是MS SQL Server 2008或更高版本,

WITH t1([Account_No], StartDate, EndDate) As
(
    SELECT [Account_No], StartDate = MIN([Start_Date]), EndDate = MAX([End_Date])
    FROM Table1
    GROUP BY Account_No
)
SELECT 
      [Account_No]
    , Amount = SUM([Field_Transaction_Total])
    , [Transaction_Count] = COUNT([Field_Transaction_ID]) 
FROM [Transaction_Table] t2
INNER JOIN t1 ON t2.[Account_No] = t1.Account_No
    AND t2.[Field_Transaction_Date] BETWEEN t1.StartDate AND t1.EndDate

如果需要,您还可以使用WITH块内的查询的副本来将此表与帐户和日期一起提供给Excel。

如果您使用其他SQL Server,只需重构此代码,我希望您有这个想法。

答案 1 :(得分:0)

您可以在自己编写的 SQL 中使用GROUP BY语句,也可以根据Start_DateEnd_Date过滤表格然后向右 - 单击要计数的列,然后选择Group By

答案 2 :(得分:0)

我会根据您的 Transaction_Table 开始新的查询。然后我会添加一个合并步骤,加入 Account_No 的第一个查询。然后我会从生成的 NewColumn 扩展 Start_Date End_Date

接下来,我将添加一个自定义列,并编写如下公式:

= [Transaction_Date] >= [Start_Date] and [Transaction_Date] <= [End_Date]

结果列将显示TRUE或FALSE。过滤为真。

最后,我会根据需要将分组依据步骤添加到Sum和Count。

我希望我能正确理解你的要求 - 你的问题并不是很清楚。