MSSQL:查找具有列的每个值的记录

时间:2012-07-16 09:39:47

标签: sql sql-server database

我们说我有一些下面的表模式: year|val1|val2 我希望获得所有val1列的val2year列。我怀疑我需要在这里分组,但我无法想象如何。 我们假设我们有多年的查询时间:SELECT DISTINCT YEAR FROM table。让我们说它返回2000,2001。因此,如果我必须将行设为2000|1|22001|1|2,则查询应返回单行1|2

2 个答案:

答案 0 :(得分: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) )

答案 1 :(得分:0)

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

从表

中选择@yearcnt = count(不同年份)

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