0

我不确定如何描述我的问题(可能标题不正确)。

这里是:

我有一张这样的桌子:

item   type stockdate    saledate

1      1    2012-11-06   2012-11-05

2      2    2012-11-06   2012-11-07

3      2    2012-11-06   2012-11-05

所以,我想从上表中选择。

有两个条件:

  1. 如果type一个项目的 是1,那么我无论如何都会显示这个项目
  2. 如果type一个项目的 是2,但它的saledate >= stockdate,那么我显示;否则,我不显示

所以从上表中,我想show only item 1 and 2,因为项目 1 有type of 1,项目 2 有type of 2但它的saledate >= stockdate,项目 3 不能显示,因为它的saledate<stockdate

如何编写选择查询?

我正在使用 MS SQL Server。

4

5 回答 5

1

如果一个项目的类型是 1,那么我无论如何都会显示这个项目

如果一个项目的类型是 2,但是它的 saledate >= stockdate,那么我显示;否则,我不显示

SELECT item, saledate, stockdate
FROM
(
    SELECT
      item,
      CASE
        WHEN type = 1 THEN 1
        WHEN type = 2 AND saledate >= stockdate THEN 1
        ELSE 0
      END ShowOrNot,
      stockdate, 
      saledate
    FROM TableName
) t
WHERE ShowOrNot = 1

PS:我用子查询写的,只是为了可读性。

SQL 小提琴演示

于 2012-11-06T13:59:55.360 回答
1

最简单的解决方案是,

SELECT  *
FROM    tableName
WHERE   (type = 1) OR
        (
            type = 2 AND
            saledate >= stockdate
        )
于 2012-11-06T14:00:14.407 回答
0
select * from myTable where type = 1 or (type=2 and saledate >= stockdate)
于 2012-11-06T14:02:13.583 回答
-1
select * 
from [table]
where type=1 or (saledate >= stockdate)
于 2012-11-06T14:00:19.430 回答
-1

这个查询怎么样:

Select * from TableName
Where SelDate>=(Case when Type=1 then SelDate else StockDate End)
于 2012-11-06T14:02:33.107 回答