【发布时间】:2014-01-07 01:16:37
【问题描述】:
另一个问题。对这些 SQL 的东西有点吃力。
我从 ADO.NET 中的查询生成 2 个表。我想从这两个表中执行第三个查询——它们不存在于连接的数据库中,但存在于数据集中。我无法为我的生活弄清楚如何做到这一点。我不想连接到数据库而是连接到数据集
我已经尝试过 DataReaders、TableAdapters、DataTable.Select(仅适用于一个表)和其他东西。答案是否在 LINQ for Datasets 中??
谢谢 安迪
Dim strSelect As String
Dim dsmcmd As OleDbDataAdapter
Dim dsm as New DataSet
strSelect = "TRANSFORM Sum(Items.amount) AS total SELECT Accounts.accCategory, Accounts.ID, Accounts.comment AS Account FROM Accounts INNER JOIN Items ON Accounts.ID = Items.accFrom WHERE (((Year([idate]))=2013) AND ((Items.category)<>3 Or (Items.category) Is Null) AND ((Accounts.accCategory)=6 OR (Accounts.accCategory)=7) AND ((Accounts.curr)=1)) GROUP BY Accounts.accCategory, Accounts.ID, Accounts.comment PIVOT Format(idate,'mmm') IN ('Jan','Feb','Mar','Apr', 'May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')"
dsmcmd = New OleDbDataAdapter(strSelect, cn)
dsmcmd.Fill(dsm, "Spent")
strSelect = "TRANSFORM Sum(Items.amount) AS total SELECT Accounts.accCategory, Accounts.ID, Accounts.comment AS Account FROM Accounts INNER JOIN Items ON Accounts.ID = Items.accFrom WHERE (((Year([idate]))=2013) AND ((Items.category)=3) AND ((Accounts.accCategory)=6) AND ((Accounts.curr)=1)) GROUP BY Accounts.accCategory, Accounts.ID, Accounts.comment PIVOT Format(idate,'mmm') IN ('Jan','Feb','Mar','Apr', 'May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')"
dsmcmd = New OleDbDataAdapter(strSelect, cn)
dsmcmd.Fill(dsm, "Allocated")
strSelect = "SELECT Totals.accCategory, Totals.ID, Totals.Account, Sum(Totals.Jan) AS Jan FROM (SELECT * FROM Allocated UNION SELECT * FROM Spent) AS Totals GROUP BY Totals.accCategory, Totals.ID, Totals.Account"
dsmcmd = New OleDbDataAdapter(strSelect, <** WHAT DO I PUT HERE **>)
dsmcmd.Fill(dsm, "Balance")
【问题讨论】: