具有相同id的SQL select行都具有相同的值

时间:2016-11-10 02:10:29

标签: sql db2

我有一张这样的桌子:

Date.prototype.timezoneOffset = new Date().getTimezoneOffset()


Date.setTimezoneOffset = (timezoneOffset)->
    return @prototype.timezoneOffset = timezoneOffset


Date.getTimezoneOffset = ->
    return @prototype.timezoneOffset


Date.prototype.setTimezoneOffset = (timezoneOffset)->
    return @timezoneOffset = timezoneOffset


Date.prototype.getTimezoneOffset = ->
    return @timezoneOffset


Date.prototype.toString = ->
    offsetTime = @timezoneOffset * 60 * 1000
    offsetDate = new Date(@getTime() - offsetTime)
    return offsetDate.toUTCString()


[
    'Milliseconds', 'Seconds', 'Minutes', 'Hours',
    'Date', 'Month', 'FullYear', 'Year', 'Day'
]
.forEach (key)=>
    Date.prototype["get#{key}"] = ->
        offsetTime = @timezoneOffset * 60 * 1000
        offsetDate = new Date(@getTime() - offsetTime)
        return offsetDate["getUTC#{key}"]()

    Date.prototype["set#{key}"] = (value)->
        offsetTime = @timezoneOffset * 60 * 1000
        offsetDate = new Date(@getTime() - offsetTime)
        offsetDate["setUTC#{key}"](value)
        time = offsetDate.getTime() + offsetTime
        @setTime(time)
        return time

提供者可以在约会时提供住宿或用餐。 有没有办法可以选择只提供餐点或只提供住宿的所有提供者?

所以我期待:

+--------+------+-----+
|Provider|Type  |Date |
+--------+------+-----+
|1       |Meal  |Date1|
+--------+------+-----+
|1       |ACCOM |Date2|
+--------+------+-----+
|2       |Meal  |Date3|
+--------+------+-----+
|2       |Meal  |Date4|
+--------+------+-----+
|3       |ACCOM |Date5|
+--------+------+-----+
|3       |ACCOM |Date6|
+--------+------+-----+

由于提供者2仅提供膳食,提供者3仅提供住宿。

更新

最初的问题是:

  

列出仅提供住宿或膳食的所有提供者(不是   都)。

     

注意:不要消除结果中的重复项。

所以我认为我应该一步到位而不是再次加入表格。

我提出了以下问题:

+--------+------+-----+
|2       |Meal  |Date3|
+--------+------+-----+
|2       |Meal  |Date4|
+--------+------+-----+
|3       |ACCOM |Date5|
+--------+------+-----+
|3       |ACCOM |Date6|
+--------+------+-----+

问题是这个查询有重复的代码,唯一的区别是'ACCOM'或'MEAL'所以可以再次改进此查询吗?

1 个答案:

答案 0 :(得分:1)

以下是每个提供商只能获得一行的方法:

select provider, min(type)
from t
group by provider
having min(type) = max(type);

如果您确实需要重复项,请使用join

select t.*
from t join
     (select provider, min(type)
      from t
      group by provider
      having min(type) = max(type)
     ) tt
     on t.provider = p.provider;