sql - SSRS 所需的 SQL 逻辑 - 来自多个结果的最大日期条目
问题描述
我的情况是有两个表 SS 和 SSUSED。表 SS 列出了使用次数有限的所有票证。表二,SSUSED 包含表 SS 中所有票证的条目。我需要从两个表中收集某些信息但是,我只需要从表 SSUSED 中具有最近日期的行中获取数据。该列已使用。
我的代码带回了表 SSUSED 中所有使用行指定的值。有人可以帮助解决仅从 SSUSED 中的最新条目中检索所需字段的逻辑。
SELECT SS.memid, SS.initialdate, SS.dateexpire, SS.initialquantity, SS.usedquantity, PRODUCTS.description, EMPLOYEES_1.lname AS trainlname, EMPLOYEES_1.fname AS trainfname, SS.ssid
FROM SS INNER JOIN
PRODUCTS ON SS.productid = PRODUCTS.productid INNER JOIN
SSUSED ON SS.ssid = SSUSED.ssid INNER JOIN
EMPLOYEES AS EMPLOYEES_1 ON SSUSED.employeeid = EMPLOYEES_1.employeeid
WHERE (SS.initialdate BETWEEN @rvStartDate AND @rvEndDate)
解决方案
您可以使用派生列对 SSUSED 记录进行排序。然后将该表与您的数据连接起来,并在连接字段中使用最新的指示器。
;WITH MostRecentSSUSED AS
(
SELECT ssid, employeid,
ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY ssid DESC) AS MostRecentID
FROM
SSUSED
)
SELECT SS.memid, SS.initialdate, SS.dateexpire, SS.initialquantity, SS.usedquantity, PRODUCTS.description, EMPLOYEES_1.lname AS trainlname, EMPLOYEES_1.fname AS trainfname, SS.ssid
FROM SS INNER JOIN
PRODUCTS ON SS.productid = PRODUCTS.productid INNER JOIN
MostRecentSSUSED SSUSED ON SS.ssid = SSUSED.ssid AND SSUSED.MostRecentID = 1 INNER JOIN
EMPLOYEES AS EMPLOYEES_1 ON SSUSED.employeeid = EMPLOYEES_1.employeeid
WHERE (SS.initialdate BETWEEN @rvStartDate AND @rvEndDate)
您也可以尝试其他方式。根据 SSUSED 的大小,下面的查询可能会更有效,因为部分数据将首先被过滤掉,然后再进行排名。
SELECT
*
FROM
(
SELECT SS.memid, SS.initialdate, SS.dateexpire, SS.initialquantity, SS.usedquantity, PRODUCTS.description, EMPLOYEES_1.lname AS trainlname, EMPLOYEES_1.fname AS trainfname, SS.ssid,
ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY ssid DESC) AS MostRecentID
FROM SS INNER JOIN
PRODUCTS ON SS.productid = PRODUCTS.productid INNER JOIN
MostRecentSSUSED SSUSED ON SS.ssid = SSUSED.ssid INNER JOIN
EMPLOYEES AS EMPLOYEES_1 ON SSUSED.employeeid = EMPLOYEES_1.employeeid
WHERE (SS.initialdate BETWEEN @rvStartDate AND @rvEndDate)
)AS X
WHERE
X.MostRecentID = 1
推荐阅读
- java - Selenium (Java):同时做正负检查页面是否正确加载
- xcode - Xcode 12.1 源代码控制未显示所有分支
- arrays - Perl 中的多维数组或哈希。访问项目
- javascript - 在 React 中更新对象值的状态
- python - Skimage.feature.hog 找到主导方向
- php - Composer2 和 PSR-4 弃用通知
- c++ - C 等效于 C++ 枚举数据,用于二进制读取和操作
- flutter - CERTIFICATE_VERIFY_FAILED:证书链中的自签名证书(handshake.cc:354))
- reactjs - 如何让 golang 重定向到前端路由?
- android - InMobi 广告未出现 - 广告请求成功,但未投放广告。NO_FILL