我试图使这个查询工作,但我得到错误:
UPDATE SIRADATOK T1 INNER JOIN (SELECT sirid, MAX(SzolgaltatasokDatumig) AS MAXDATE
FROM ADOK GROUP BY SIRID HAVING MAX(SzolgaltatasokDatumig)<>' ' AND
MAX(SzolgaltatasokDatumig) IS NOT NULL) AS T2 ON T1.SIRID=T2.sirid
SET MegvaltasIdeje = MAXDATE;
我得到的错误:
"操作必须使用可更新的查询">
我也试过这样做:
UPDATE T2
SET T1.MegvaltasIdeje = T2.MAXDATE
FROM SIRADATOK T1, (SELECT sirid, MAX(SzolgaltatasokDatumig) AS MAXDATE
FROM ADOK GROUP BY SIRID HAVING MAX(SzolgaltatasokDatumig)<>' '
AND MAX(SzolgaltatasokDatumig) IS NOT NULL) T2
WHERE T1.SIRID=T2.sirid
但是我得到:
"查询表达式'T2 '语法错误(缺少运算符)。MAXDATE FROM SIRADATOK T1'.">
使用June7注释,我创建了以下查询,它可以工作:
UPDATE
SIRADATOK AS T1
SET
T1.MegvaltasIdeje = MID(
DMAX(
"SzolgaltatasokDatumig", "Adok",
"SzolgaltatasokDatumig<>' '
AND SzolgaltatasokDatumig IS NOT NULL AND SIRID=" & T1.SIRID
),
1,
10
)
WHERE
DMAX(
"SzolgaltatasokDatumig", "Adok",
"SzolgaltatasokDatumig<>' '
AND SzolgaltatasokDatumig IS NOT NULL AND SIRID=" & T1.SIRID
) Is Not Null
And DMAX(
"SzolgaltatasokDatumig", "Adok",
"SzolgaltatasokDatumig<>' '
AND SzolgaltatasokDatumig IS NOT NULL AND SIRID=" & T1.SIRID
)<> ' '
我为SzolgaltatasokDatumig列添加了一个额外的MID,因为该列是一个DateTime,而我只需要Date我知道这不是最好的优化查询,但这只是一次性使用,它的工作。
再次感谢,June7