【问题标题】:SQL Server query on two tablesSQL Server 查询两个表
【发布时间】:2014-08-30 17:46:34
【问题描述】:

我有一个包含两个表的 SQL Server 数据库,表 1 列出成员记录,表 2 列出每个成员记录的名称。表 1 中的每条记录在表 2 中可以有多个人。

  • table_1.MembershipNumber
  • table_1.MemberType
  • table_1.StartDate

  • table_2.MembershipNumber

  • table_2.FirstName
  • table_2.LastName
  • table_2.Age

我想创建一个视图,它过滤掉表 1 中的记录,其中表 2 中任何人的年龄都在 50 岁以上。

【问题讨论】:

  • 您不应该存储一个人的年龄。相反,您应该存储他们的生日并在需要时计算他们的年龄。否则,您的数据会一直过时。

标签: sql sql-server database


【解决方案1】:
CREATE VIEW [dbo].[vw_Membership]
  AS 
Select t.MembershipNumber ,tt.FirstName,tt.LastName 
    from MembershipNumber_table_1 t
    INNER JOIN  MembershipNumber_table_2 tt
    ON t.MembershipNumber = tt.MembershipNumber 
        AND MemberType = 'A'
    WHERE (DATEDIFF(yy,MembershipNumber_table_2.Age,GetDate()) -
CASE WHEN((MONTH(MembershipNumber_table_2.Age)*100 + DAY(MembershipNumber_table_2.Age)) > (MONTH(GetDate())*100 + DAY(GetDate()))) THEN 1 ELSE 0 END)>50
GO

WHERE DATEDIFF(YEAR, MembershipNumber_table_2.Age, GETDATE())>50

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    相关资源
    最近更新 更多