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(*)
回到您的数据库中,您可以找到另一种方法。如果所有行都有一个偶数为空的值,那么不显示所有结果是什么意思?或者只显示行没有空值