SQL Server-删除组中为空的结果

SQL Server-删除组中为空的结果,sql,sql-server,Sql,Sql Server,不确定标题是否恰当,但我有点不确定如何用词。我有一个情况表,我需要根据情况组给出传递的数据显示某些问题 我传入的数据如下所示: ---------------------------------------------------- | CircumstanceTypeGiven | CircumstanceValueGiven | ---------------------------------------------------- | Equipment |

不确定标题是否恰当,但我有点不确定如何用词。我有一个
情况表
,我需要根据
情况组
给出传递的数据显示某些问题

我传入的数据如下所示:

----------------------------------------------------
| CircumstanceTypeGiven | CircumstanceValueGiven |
----------------------------------------------------
|      Equipment        |           X            |
----------------------------------------------------
|      Customer         |        BEEFORE         |
----------------------------------------------------
--------------------------------------------------
| ID | CircumstanceType  |  GroupID  |  Value    |
--------------------------------------------------
| 1  |    Equipment      |    1      |  Reefer   |
--------------------------------------------------
| 2  |    Customer       |    1      |  BEEFOR   |
--------------------------------------------------
--------------------------------------------------
| ID | CircumstanceGroupID  |    QuestionID      |
--------------------------------------------------
| 1  |         1            |         1          |
--------------------------------------------------
--------------------------------------------------
| ID | Question                                  |
--------------------------------------------------
| 1  |  This is my question for Reefer & BEEFOR  |
--------------------------------------------------
我的
环境主管
表如下所示:

----------------------------------------------------
| CircumstanceTypeGiven | CircumstanceValueGiven |
----------------------------------------------------
|      Equipment        |           X            |
----------------------------------------------------
|      Customer         |        BEEFORE         |
----------------------------------------------------
--------------------------------------------------
| ID | CircumstanceType  |  GroupID  |  Value    |
--------------------------------------------------
| 1  |    Equipment      |    1      |  Reefer   |
--------------------------------------------------
| 2  |    Customer       |    1      |  BEEFOR   |
--------------------------------------------------
--------------------------------------------------
| ID | CircumstanceGroupID  |    QuestionID      |
--------------------------------------------------
| 1  |         1            |         1          |
--------------------------------------------------
--------------------------------------------------
| ID | Question                                  |
--------------------------------------------------
| 1  |  This is my question for Reefer & BEEFOR  |
--------------------------------------------------
然后,我得到了一个表,其中包含这样的组的问题ID:

----------------------------------------------------
| CircumstanceTypeGiven | CircumstanceValueGiven |
----------------------------------------------------
|      Equipment        |           X            |
----------------------------------------------------
|      Customer         |        BEEFORE         |
----------------------------------------------------
--------------------------------------------------
| ID | CircumstanceType  |  GroupID  |  Value    |
--------------------------------------------------
| 1  |    Equipment      |    1      |  Reefer   |
--------------------------------------------------
| 2  |    Customer       |    1      |  BEEFOR   |
--------------------------------------------------
--------------------------------------------------
| ID | CircumstanceGroupID  |    QuestionID      |
--------------------------------------------------
| 1  |         1            |         1          |
--------------------------------------------------
--------------------------------------------------
| ID | Question                                  |
--------------------------------------------------
| 1  |  This is my question for Reefer & BEEFOR  |
--------------------------------------------------
我的问题表:

----------------------------------------------------
| CircumstanceTypeGiven | CircumstanceValueGiven |
----------------------------------------------------
|      Equipment        |           X            |
----------------------------------------------------
|      Customer         |        BEEFORE         |
----------------------------------------------------
--------------------------------------------------
| ID | CircumstanceType  |  GroupID  |  Value    |
--------------------------------------------------
| 1  |    Equipment      |    1      |  Reefer   |
--------------------------------------------------
| 2  |    Customer       |    1      |  BEEFOR   |
--------------------------------------------------
--------------------------------------------------
| ID | CircumstanceGroupID  |    QuestionID      |
--------------------------------------------------
| 1  |         1            |         1          |
--------------------------------------------------
--------------------------------------------------
| ID | Question                                  |
--------------------------------------------------
| 1  |  This is my question for Reefer & BEEFOR  |
--------------------------------------------------
所以,我通过了设备类型X和客户价值BEEFOR。我的情况表显示,如果我通过了冷藏BEEFORE,那么我需要获得
groupID
1的问题。但是,如果只传递了1(我给出的场景),我不希望出现这些问题

下面是SQL:

CREATE TABLE CircumstanceMaster
(
    CircumstanceID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    CircumstanceGroupID INT NOT NULL,
    CircumstanceType INT NOT NULL,
    CircumstanceValue VARCHAR(MAX) NOT NULL
)
INSERT INTO CircumstanceMaster ( CircumstanceType, CircumstanceGroupID, CircumstanceValue ) VALUES ( 1, 1, 'R' )
INSERT INTO CircumstanceMaster ( CircumstanceType, CircumstanceGroupID,  CircumstanceValue ) VALUES ( 2, 1, 'DEEFOR' )


CREATE TABLE QuestionMaster
(
    QuestionID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    Question VARCHAR(MAX) NOT NULL
)
INSERT INTO QuestionMaster ( Question ) VALUES ( 'Reefer & DEEFOR question' )


CREATE TABLE CircumstanceQuestion
(
    ID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    CircumstanceGroupID INT NOT NULL,
    QuestionID INT NOT NULL
)
INSERT INTO CircumstanceQuestion ( CircumstanceGroupID, QuestionID  ) VALUES ( 1, 1 )

declare @given Table(CircumstanceTypeGivenID INT, CircumstanceValueGiven varchar(50))
insert into @given(CircumstanceTypeGivenID,CircumstanceValueGiven) VALUES ( 1, 'X')
insert into @given(CircumstanceTypeGivenID,CircumstanceValueGiven) VALUES ( 2, 'DEEFOR')



select *
from CircumstanceMaster cm
    left outer join @given g on cm.CircumstanceType=g.CircumstanceTypeGivenID and cm.CircumstanceValue=g.CircumstanceValueGiven
当我加入我的
环境主表时,我得到了这个结果。我期望得到结果,但我需要一种方式说“如果同一组中的任何行都有空值,请不要返回任何内容”:

试试这个:

select CircumstanceGroupID 
from CircumstanceMaster cm 
left join @given g on cm.CircumstanceType=g.CircumstanceTypeGivenID and cm.CircumstanceValue=g.CircumstanceValueGiven
group by CircumstanceGroupID
having sum(case when CircumstanceValueGiven is null then 0 else 1 end) = count(*)

回到您的数据库中,您可以找到另一种方法。

如果所有行都有一个偶数为空的值,那么不显示所有结果是什么意思?或者只显示行没有空值