我有一个表,该表的列中有15个不同的名称(TotalName),其中两个名称是flowOne和flowTwo。还有一个列是时间戳(t_stamp)和值。每次将新值添加到表中时,都会将其时间戳记及其来源。我正在尝试创建一个查询,该查询将为我提供15个不同名称中的每个名称的列以及月份和月份的总数。我已经尝试了其中两个名称,但它们分别位于单独的行中。我希望它在本月的同一行中全部显示。
SELECT YEAR(t_stamp) as 'Year', MONTH(t_stamp) as 'Month', sum(FlowTotals.FlowTotal) as 'flowOne', '' as 'flowTwo'
FROM DataBase.dbo.FlowTotals
WHERE FlowTotals.TotalName = 'flowOne'
and year(t_stamp) = year(getDate())
Group By Year(t_stamp), Month(t_stamp)
UNION
SELECT YEAR(t_stamp) as 'Year', MONTH(t_stamp) as 'Month', '' as 'flowOne', sum(FlowTotals.FlowTotal) as 'flowTwo'
FROM DataBase.dbo.FlowTotals
WHERE FlowTotals.TotalName = 'flowTwo'
and year(t_stamp) = year(getDate())
Group By Year(t_stamp), Month(t_stamp)
按月订购
此输出
Year Month totalOne totalTwo
2019 1 123456 0
2019 1 0 789123
2019 2 456789 0
2019 2 0 345678
我想在第1个月有一行,在第2个月有一行,并且该行上的所有值都以此类推。
我知道问题的一部分是我的Select语句中的'flowOne是”,但这是我想到的分成两列的唯一方法。每行的总和按预期方式工作。
而不是您的两个查询中的union
,而是在join
上将它们q1.year = q2.year and q1.month = q2.month
。