sql - 需要在 ssis 中使用从其他查询返回 5 个随机行结果的查询
问题描述
我是 SSIS 和复杂 sql 语句的新手。我正在尝试将返回人员的查询与上个月的日期结合起来,然后获取这些结果并从中获得 5 个真正随机的行。
在获得 5 个随机行之前,我的查询是:
SELECT
DISTINCT
isnull(dbo.fnRemovePatternFromString(p.Last_Name, '%[,-.'']%'), '') as [Last]
,isnull(dbo.fnRemovePatternFromString(p.First_Name, '%[,-.'']%'), '') as [First]
,isnull(dbo.fnRemovePatternFromString(p.Middle_Initial, '%[,-.'']%'), '') as [Middle]
,isnull(pf.Date_on_staff, '') as [Date on Staff]
,pf.Status_from_date
FROM person p
inner JOIN person_facilities pf ON p.Person_ID = pf.Person_ID
LEFT JOIN usr_FacultyMember fm ON p.Person_ID = fm.person_id
WHERE
pf.FacCode in ('s', 'H', 'E')
and
(
pf.Status_from_date >= (getdate()-31 )
and pf.Status_from_date < getdate()
)
这将返回大约 300 行,但每个月都会更改。
从这个结果中,我需要从结果中得到 5 个随机行。它不能是结果的顶部,也不能是结果的 1/5 处的 5 行。我想避免像这个例子一样创建一个视图来存储结果。
Tablesample看起来不像我需要的,因为它不是随机的。
我正在尝试应用此示例,因为它看起来是随机的,但我需要控制输出中的行数。这有一个类似的答案。这是我喜欢这两个例子的部分:
(abs(cast((binary_checksum(*) * rand()) as int)) % 100) <10
我不确定如何控制输出,所以我只能从中得到 5 行。我正在考虑创建一个变量并存储 10 需要返回 5 行,但我不知道该怎么做。有什么想法吗?
我正在查看行数的变量但我不确定我会用它做什么或如何在我的 rand 行中应用它。
我想它不必是一个 sql 查询,但我仍然不确定如何在 ssis 中执行此操作。如果我必须创建一个视图,我可以,但我不想让我的数据库与视图杂乱无章。
任何帮助解决这个复杂的问题将不胜感激。
更新:这与random-number-on-sql-without-using-newid 不同,因为我不排除 newid 的顺序,我只是想找到返回的随机 5 行。
解决方案
可能有多个逻辑来实现一些随机化,我想到了对列 id/dates 取模。
SELECT
DISTINCT
isnull(dbo.fnRemovePatternFromString(p.Last_Name, '%[,-.'']%'), '') as [Last]
,isnull(dbo.fnRemovePatternFromString(p.First_Name, '%[,-.'']%'), '') as [First]
,isnull(dbo.fnRemovePatternFromString(p.Middle_Initial, '%[,-.'']%'), '') as [Middle]
,isnull(pf.Date_on_staff, '') as [Date on Staff]
,pf.Status_from_date
FROM person p
inner JOIN person_facilities pf ON p.Person_ID = pf.Person_ID
LEFT JOIN usr_FacultyMember fm ON p.Person_ID = fm.person_id
WHERE
pf.FacCode in ('s', 'H', 'E') order by MOD( sysdate-date,2 )
推荐阅读
- dpdk - DPDK 在一个端口上获得太多 rx_crc_errors
- json - 使用 VBA-JSON 库将 excel 数据转换为 json
- java - 在 Android Java 中调用另一个类中的函数
- javascript - Python 和 JavaScript 链接
- reactjs - 具有 React 上下文的当前用户
- mysql - MySQL在加入后得到两条最近的记录
- android-studio - 如何注释可能引发异常的 Kotlin 类构造函数?
- javascript - 双循环仅适用于数组的最后一项
- python - Tensorflow C++ API:如何将输入参数传递给 CUDA 内核
- javascript - 等效于 Java SHA1PRNG 的 Javascript