【问题标题】:MSSQL: find records that has each value of columnMSSQL:查找具有每个列值的记录
【发布时间】:2012-07-16 18:09:41
【问题描述】:

假设我有一些以下表架构: year|val1|val2 我想获取所有具有year 列值的val1val2 列。我怀疑我需要在这里分组,但我无法想象如何。 假设我们有一组查询年份:SELECT DISTINCT YEAR FROM table。假设它返回 2000,2001。因此,如果我必须将行设为 2000|1|22001|1|2,则查询应返回单行 1|2

【问题讨论】:

  • 这些字段是什么类型,你能展示示例数据和想要的结果吗?
  • 定义:所有 val1 都是 GUID,val2 是 nvarchar。年份当然是整数

标签: sql sql-server database


【解决方案1】:

这样的事情可能会奏效

select
    value1
from 
    table as t1 inner join
    (select distinct year from table) as t2
    on t1.year=t2.year
group by
    val1 
having count(distinct t1.year)=(count(distinct t2.year) )

【讨论】:

  • 不幸的是,我无法访问 DB 来尝试它。一旦我尝试这个,我会写下结果并接受问题。谢谢你的帮助。
【解决方案2】:

不确定您的问题。但我认为你需要所有有效年值的 val1 和 val2 值。如果是这种情况,那么你必须对表进行内部连接 像这样的

从表中选择 @yearcnt = count(distinct year)

或从表中选择 val1,count(distint year) 作为 totalyear 按 val1 分组 有计数(不同年份)= @yearcnt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多