-2

我有一个说 100 行的 sql 表。结构有点像

colectiveNo    colectiveName         p1Number        P1EffectiveFromDate   morecol
--------------------------------------------------------------------------------------
1                  name1             somenumber         somedate            NULL
1                  name1             somenumber         somedate            1234
1                  name1             somenumber         somedate            5432

我们按 , 按 colectiveNo 分组

我想像这样使用条件:

  1. 如果带有“morcol”的组中的行为空,并且同一组中有带有某些数字的 morcol 的行,则不显示带有空值的行显示第 2,3 行

  2. 否则,如果我只有 morecol 为空的行,则为该组显示它们

.

colectiveNo    colectiveName         p1Number        P1EffectiveFromDate   morecol
    ----------------------------------------------------------------------------------
    1                name1           somenumber         somedate            NULL
    1                name1           somenumber         somedate            NULL
    1                name1           somenumber         somedate            NULL

显示第 1,2,3 行

我很难做到这一点,请帮忙

4

1 回答 1

0

这是你可以做到的一种方法,你说你在colectiveNo上分组,所以我假设你的第二个充满空值的例子是不同的colectiveNo组

SELECT *
FROM
    (
        SELECT   colectiveNo
                ,colectiveName
                ,p1Number
                ,p1EffectiveFromDate
                ,morecol
                ,CASE WHEN MAX(morecol) OVER (PARTITION BY colectiveNo) IS NULL  THEN 1 ELSE 0 END AS fldIncNulls 
        FROM tbltest
    )data
WHERE (morecol IS NOT NULL OR fldIncNulls = 1)
于 2012-09-21T04:17:14.540 回答