【问题标题】:SQL where statement and matching datesSQL where 语句和匹配日期
【发布时间】:2017-01-02 13:35:44
【问题描述】:

Customer_profile 表

userid   -   initialDepositSuccessDate
111111            2016-08-01
222222            2016-08-15  

玩家活动表

userid   -        Date       -    Deposit
111111            2016-08-01       $5.00 
111111            2016-08-02       $10.00 
111111            2016-08-03       $15.00
222222            2016-08-05       $0.00
222222            2016-08-08       $0.00
222222            2016-08-15       $20.00 

我的查询

Select pa.userid, pa.deposit
from player_activity pa
INNER JOIN customer_profile cp
    on cp.userid = pa.userid
where pa.depositmade_amt <> 0
    AND cp.amountGamingPlayerBalancecurrent > 0
    AND cp.accountStatus = 'active'
    AND pa.date =  cp.initialDepositSuccessDate

理想情况下,我希望我的查询返回这个结果:

pa.userid  pa.Deposit
111111     $5.00 
222222     $20.00 

但它返回的是这个:

pa.userid  pa.Deposit
111111       $5.00 
222222       $0.00

帮助?

【问题讨论】:

  • 我没有完全理解您的问题——您的示例数据与查询中的字段不匹配。话虽如此,您的查询似乎确实返回了您的预期结果:sqlfiddle.com/#!9/26e305/1
  • 做了一些修改。希望它对你更有意义
  • 您的查询应该返回您想要的输出。您必须使用不同的查询或在表中具有不同的内容。也许重复行与不同的accountStatus
  • 你用的是什么数据库?
  • 列的数据类型是什么?我对deposit 专栏特别感兴趣。是数字还是字符串?

标签: mysql sql date inner-join where


【解决方案1】:

确保只比较日期部分(而不是时间)

也许你可以使用 Convert 函数来转换为日期类型

Convert(date, pa.date)=Convert(date, cp.initialDepositSuccessDate)

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多