TGu*_*ond 2 sql t-sql sql-server subquery
我试图使用这样的查询从表中选择行
SELECT pminf_member, pminf_schmem
, pminf_date, pminf_fund
, pminf_cont, pminf_rate
, pminf_matrix
FROM pe_minvf
WHERE (pminf_member = 4380)
AND (pminf_schmem = 'M')
AND (pminf_date <= '03/30/2011')
AND (pminf_date =
(SELECT MAX(pminf_date) AS Expr1
FROM pe_minvf AS pe_minvf_1
WHERE (pminf_member = 4380)
)
)
AND (pminf_fund = 'LIFESTYLE')
Run Code Online (Sandbox Code Playgroud)
我应该从子查询(我认为)得到的是'01/01/2011'的日期,但是当我运行我的查询时,我得不到任何结果.
如果我用硬编码日期替换子查询,我会返回正确的行.例如
SELECT pminf_member, pminf_schmem
, pminf_date, pminf_fund
, pminf_cont, pminf_rate
, pminf_matrix
FROM pe_minvf
WHERE (pminf_member = 4380)
AND (pminf_schmem = 'M')
AND (pminf_date <= '03/30/2011')
AND (pminf_date = '01/01/2011')
AND (pminf_fund = 'LIFESTYLE')
Run Code Online (Sandbox Code Playgroud)
此查询返回正确的结果.
任何想法为什么子查询没有返回最大日期或如果是,为什么我没有返回任何行?
谢谢,特里斯坦
您可以根据查询中的不同条件进行过滤.
它pminf_fund = 'LIFESTYLE'在子查询中,但pminf_schmem = 'M'在外部查询中.
此外,您还限制外部查询中的日期,而不是在子查询中执行此操作.
如果您只需要最新的'03/30/2011'记录,请使用:
SELECT TOP 1
pminf_member, pminf_schmem, pminf_date, pminf_fund, pminf_cont, pminf_rate, pminf_matrix
FROM pe_minvf
WHERE pminf_member = 4380
AND pminf_schmem = 'M'
AND pminf_fund = 'LIFESTYLE'
AND pminf_date <= '03/30/2011'
ORDER BY
pminf_date DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9535 次 |
| 最近记录: |