[英]How can I make this query in SQL Server 2005 Compact Edition 3.1?
this subquery works in SQL Server 2005 Compact Edition 4 此子查询在SQL Server 2005 Compact Edition 4中有效
SELECT TableA.serialNo
FROM TableA,
(SELECT MAX(TableB.lotNo) AS lotNo,TableA.codeA,TableA.codeB
FROM TableA, TableB
WHERE (TableA.codeA =TableB.codeA)
AND (TableA.codeB = TableB.codeB)
AND ((LEN(TableA.openDate) > 0) OR TableA.openDate IS NOT NULL)
GROUP BY
TableA.codeA, TableA.codeB) a
WHERE (TableA.lotNo < a.lotNo)
AND (TableA.codeA = a.codeA)
AND (TableA.codeB = a.codeB)
AND ((LEN(TableA.endDate) = 0) OR TableA.endDate IS NULL)
How can It be made in SQL Server 2005 Compact Edition 3.1? 如何在SQL Server 2005 Compact Edition 3.1中进行制作?
Thanks! 谢谢!
Have you tried replacing the (less readable imho) join syntax with plain INNER JOINS
? 您是否尝试过用普通的
INNER JOINS
替换(不太可读的imho)连接语法?
SELECT TableA.serialNo
FROM TableA
INNER JOIN (
SELECT MAX(TableB.lotNo) AS lotNo
,TableA.codeA
,TableA.codeB
FROM TableA
INNER JOIN TableB ON TableA.codeA = TableB.codeA
AND TableA.codeB = TableB.codeB
WHERE LEN(TableA.openDate) > 0
OR TableA.openDate IS NOT NULL
GROUP BY
TableA.codeA, TableA.codeB
) a ON TableA.lotNo < a.lotNo
AND TableA.codeA = a.codeA
AND TableA.codeB = a.codeB
WHERE LEN(TableA.endDate) = 0
OR TableA.endDate IS NULL
or some rewriting of the conditions 或重写条件
SELECT a1.serialNo
FROM TableA a1
INNER JOIN (
SELECT MAX(b.lotNo) AS lotNo
, a.codeA
, a.codeB
FROM TableA a
INNER JOIN TableB b ON a.codeA = b.codeA
AND a.codeB = b.codeB
WHERE a.openDate IS NOT NULL
GROUP BY
a.codeA, a.codeB
) a2 ON a1.lotNo < a2.lotNo
AND a1.codeA = a2.codeA
AND a1.codeB = a2.codeB
WHERE LEN(COALESCE(a1.endDate, '')) = 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.