小编Sco*_*ott的帖子

选择每个用户的最大记录

这似乎应该相当简单,但我在寻找一个适合我的解决方案时遇到了绊脚石.

我有一个member_contracts表具有以下(简化)结构.

MemberID | ContractID   | StartDate | End Date |
------------------------------------------------
1          1              2/1/2002    2/1/2003
2          2              3/1/2002    3/1/2003
3          3              4/1/2002    4/1/2003
1          4              2/1/2002    2/1/2004
2          5              3/1/2003    2/1/2004
3          6              4/1/2003    2/1/2004
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个查询,从该表中选择最近的合同.这是这个小例子的以下输出:

MemberID | ContractID   | StartDate | End Date |
------------------------------------------------
1          4              2/1/2002    2/1/2004
2          5              3/1/2003    2/1/2004
3          6              4/1/2003    2/1/2004
Run Code Online (Sandbox Code Playgroud)

基于每个用户执行此操作非常简单,因为我可以使用子查询来为指定用户选择max contractID.我正在使用SQL服务器,所以如果有一种特殊的方式来做这种味道,我愿意使用它.就个人而言,我喜欢与引擎无关的东西.

但是,我将如何编写一个能够实现所有用户目标的查询?

编辑:我还应该补充一点,我正在寻找每个用户的最大contractID值,而不是最近的日期.

sql sql-server subquery

32
推荐指数
2
解决办法
5万
查看次数

SQLAlchemy无法连接到mssql数据库

这是我的简单测试脚本.只是尝试做一个基本的选择语句.找到教程的基本部分.

from sqlalchemy import *

db = create_engine('mssql+pyodbc://user:pass@ip_address/database_name')    

db.echo = True 
metadata = MetaData(db)

users = Table('member', metadata, autoload=True)

def run(stmt):
    rs = stmt.execute()
    for row in rs:
        print row

s = users.select(users.c.fname == 'Bill')
run(s)
Run Code Online (Sandbox Code Playgroud)

经过一个小时的搜索并尝试了一些解决方案之后,我就没有比开始时更接近解决它了.希望我在某个地方犯了一个简单的错误,但我找不到它......

这是我得到的错误

sqlalchemy.exc.DBAPIError: (Error) ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)') None None
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激!

python sql-server sqlalchemy

26
推荐指数
1
解决办法
2万
查看次数

标签 统计

sql-server ×2

python ×1

sql ×1

sqlalchemy ×1

subquery ×1