SQL根据日期获取特定结果

时间:2017-07-19 02:37:42

标签: sql if-statement case

我有一张这样的表,

Country         | Store     | Stock | Display | Designation  | Date
--------------- | --------- | ----- | ------- | -------------| ----------
USA             | USD       | 10    | Yes     | Merchandiser | 2017-07-16 
USA             | USD       | 20    | Yes     | Merchandiser | 2017-07-16
USA             | USD       | 30    | Yes     | Promoter     | 2017-07-16
USA             | USD       | 40    | Yes     | Promoter     | 2017-07-16

我想成为这样的结果

Country         | Store     | Stock | Display | Designation  | Date
--------------- | --------- | ----- | ------- | -------------| ----------
USA             | USD       | 30    | Yes     | Promoter     | 2017-07-16
USA             | USD       | 40    | Yes     | Promoter     | 2017-07-16

条件是日期是商品和促销商中的一些只获得启动记录。如果同一日期获得启动数据,请动态检查日期。 我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

这应该有效:

SELECT DISTINCT t1.* 
FROM table t1 
JOIN table t2 
ON t2.Designation = 'Merchandiser' 
AND t2.Date = t1.Date 
WHERE t1.Designation = 'Promoter'

当然,您需要将table替换为实际的表名。我们的想法是,您可以将表格内部连接到自身。

答案 1 :(得分:1)

很难理解你在寻找什么。你的病情很难读。英语没有多大意义,但我理解英语不是你的第一语言。

此查询将返回在同一日期具有Merchandiser记录的任何Promoter记录。我认为这就是你要找的东西。

SELECT *
FROM Table t1
WHERE t1.Designation = 'Promoter'
    AND EXISTS (
        SELECT 1
        FROM Table t2 
        WHERE t2.Date = t1.Date
            AND t2.Designation = 'Merchandiser'
    )

答案 2 :(得分:0)

SELECT *
FROM table
WHERE Designation='Promoter' AND Date='2017-07-16'