Я уже развиваюсь из более ранних приложений для Windows Mobile.
у меня есть стол:
assetNo nvarchar(20)
roomno nvarchan(8)
status ncarchar(4)
Asset no RoomNo Status
001 DPN 0
002 TRG 4
003 SHW 1
004 ROOM 1
005 DPN 1
.
.
я хочу собрать по статусу и разделить статус 0 и все записи, сгруппировать по roomno
вывод будет таким:
RoomNo Status0 sllstatus
DPN 1 2
TRG 0 1
SHW 0 1
ROM 1 1
У меня такой запрос:
SELECT a.RoomNo , a.Scanmanual AS ScanManual, b.allscan AS AllScan
FROM
(SELECT roomno, count(*) AS scanmanual
FROM assets
WHERE status = 0
GROUP BY roomno) AS a
INNER JOIN
(SELECT roomno, count(*) AS allscan
FROM assets
GROUP BY roomno) AS b ON (a.roomno=b.roomno)
этот запрос хорошо работает в SQL Server Compact Edition, но при запуске в Visual Studio 2005 с ошибкой " произошла ошибка при синтаксическом анализе запроса [Номер строки токена = 1, Toker ofset = 78, в ошибке = выберите] "
private void Summary_Load(object sender, EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
string sql ="SELECT a.RoomNo , a.Scanmanual AS ScanManual, b.allscan AS AllScan from (select roomno, count(*) AS scanmanual from assets WHERE status = 0 group by roomno) AS a inner join (select roomno, count(*) AS allscan FROM assets group by roomno) as b on(a.roomno=b.roomno)"
SqlCeDataAdapter da = new SqlCeDataAdapter();
try
{
DataSet ds = new DataSet();
da.SelectCommand = new SqlCeCommand(sql, dbConn);
da.Fill(ds, "Assets");
dataGrid.DataSource = ds.Tables["Assets"];
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message,
"DB Operation SDF", MessageBoxButtons.OK, MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1);
}
finally
{
Cursor.Current = Cursors.Default;
da.SelectCommand.Dispose();
da.Dispose();
}
}
что я должен сделать, чтобы исправить эту ошибку ?? спасибо