我有一个用于将数据导入Crystal Report的查询;它会折叠数据,以便为每个唯一的STOCK_ID获取一条记录,而Crystal中的逻辑和格式依赖于此。
现在我需要在报告上再添加三列。隔离,查询看起来像这样:
*SELECT LINE.STOCK_ID ,LINE.QTY ,LINE.ORD_NUMB ,LINE.LINE_NUMB ,ORDER.DATE ,ORDER.VENDOR ,ORDER.STATUS ,PRODUCT.COUNT
FROM tbl_LINE LINE
JOIN tbl_ORDER ORDER ON LINE.ORD_NUMB = ORDER.ORD_NUMB
JOIN tbl_PRODUCT PRODUCT ON LINE.STOCK_ID = PRODUCT.STOCK_ID
WHERE ORDER.STATUS < 600 AND PRODUCT.COUNT > 1
ORDER BY LINE.STOCK_ID ,ORDER.DATE*
这会引入多个LINE.QTY,ORDER.DATE,ORDER.VENDOR和STOCK_ID,但我需要折叠才能获得最新的ORDER.DATE以及其他两个相关列。
我没有使用连接表执行此操作的解决方案。
任何见解。
答案 0 :(得分:0)
这样的事情怎么样?
SELECT LINE.STOCK_ID ,LINE.QTY ,LINE.ORD_NUMB ,LINE.LINE_NUMB ,ORDER.DATE ,ORDER.VENDOR ,ORDER.STATUS ,PRODUCT.COUNT
FROM tbl_LINE LINE
JOIN tbl_ORDER ORDER ON LINE.ORD_NUMB = ORDER.ORD_NUMB
JOIN tbl_PRODUCT PRODUCT ON LINE.STOCK_ID = PRODUCT.STOCK_ID
JOIN
(
SELECT PRODUCT.STOCK_ID, max(ORDER.DATE) as MaxOrderDate
FROM tbl_LINE LINE
JOIN tbl_ORDER ORDER ON LINE.ORD_NUMB = ORDER.ORD_NUMB
JOIN tbl_PRODUCT PRODUCT ON LINE.STOCK_ID = PRODUCT.STOCK_ID
WHERE ORDER.STATUS < 600 AND PRODUCT.COUNT > 1
GROUP BY PRODUCT.STOCK_ID
) x on LINE.STOCK_ID = x.STOCK_ID and ORDER.DATE = x.MaxOrderDate
WHERE ORDER.STATUS < 600 AND PRODUCT.COUNT > 1
ORDER BY LINE.STOCK_ID ,ORDER.DATE