在两个表上进行完全外连接以创建数据表asp.net c#

时间:2016-03-06 23:26:19

标签: c# sql asp.net datatable

我有两张桌子:Incomings和Expenditures。 Incomings拥有IncDate,IncCost和Expenditures拥有ExpDate和ExpCost。 IncCost和ExpCost存储为double,IncDate和ExpDate存储为字符串dd / MM / yyyy(我知道不好的做法)。我正在尝试合并IncDate和ExpDate,并总结每天的成本。我正在尝试将此数据添加到数据表中,以便我可以使用它创建图表。我得到的错误是"关键字' AS'"附近的语法不正确尽管如此,它并没有多大用处。 这是我用来尝试创建这个数据表的代码

import sys, collections
raw_input = sys.stdin.readline
n, m, k = map(int, raw_input().split())
dict1 = collections.defaultdict(set)
ans = {i:[set([i])for j in xrange(k)]for i in xrange(1, n+1)}

for i in xrange(m):
    x, y = map(int, raw_input().split())
    dict1[x].add(y)
    dict1[y].add(x)

for point in dict1:
    ans[point][0].update(dict1[point])

for i in xrange(1, k):
    for point in dict1:
        for neighbour in dict1[point]:
            ans[point][i].update(ans[neighbour][i-1])

for i in xrange(1, n+1):
    print len(ans[i][-1])

非常感谢任何帮助。提前干杯

1 个答案:

答案 0 :(得分:1)

错误在于您在ON子句中使用的“AS FinalDate”语句(在下面的查询中以粗体显示)。不知道为什么As子句突然在ON子句中爆发了。 SQL中的ON子句不允许对列进行别名(使用AS关键字)。尝试修复它以解决您的问题。如果FinalDate是计算字段,那么它应该出现在SELECT子句中。

SELECT CONVERT(DATETIME, IncDate, 103) AS IncDate,
SUM(IncCost) AS IncCost, 
CONVERT(DATETIME, ExpDate, 103) AS ExpDate, 
SUM(ExpCost) AS ExpCost 
FROM Incomings i 
FULL OUTER JOIN Expenditures e 
ON i.IncDate = e.ExpDate 
AS FinalDate
GROUP BY CONVERT(DATETIME, FinalDate, 103) 
ORDER BY CONVERT(DATETIME, FinalDate, 103)

希望这有帮助!