Nicht sicher, ob der Titel korrekt ist, aber ich war ein wenig unsicher, wie man es anspricht. Ich habe eine Tabelle von circumstances
und ich muss bestimmte Fragen basierend auf der Gruppe der circumstances
angesichts der übergebenen Daten zeigen.SQL Server - Ergebnisse mit NULL in Gruppe
Meine in Daten übergeben wie folgt aussieht:
----------------------------------------------------
| CircumstanceTypeGiven | CircumstanceValueGiven |
----------------------------------------------------
| Equipment | X |
----------------------------------------------------
| Customer | BEEFORE |
----------------------------------------------------
Meine CircumstanceMaster
Tabelle sieht wie folgt aus:
--------------------------------------------------
| ID | CircumstanceType | GroupID | Value |
--------------------------------------------------
| 1 | Equipment | 1 | Reefer |
--------------------------------------------------
| 2 | Customer | 1 | BEEFOR |
--------------------------------------------------
Ich habe dann einen Tisch bekam, die für die Frage-IDs hält die Gruppen mögen so:
--------------------------------------------------
| ID | CircumstanceGroupID | QuestionID |
--------------------------------------------------
| 1 | 1 | 1 |
--------------------------------------------------
Meine Frage Tabelle:
--------------------------------------------------
| ID | Question |
--------------------------------------------------
| 1 | This is my question for Reefer & BEEFOR |
--------------------------------------------------
Also, ich bin immer einen Gerätetyp X und einen Kundenwert von BEEFOR geben. Mein Umstand Tabelle sagt, dass, wenn ich Reefer geben binundBEEFORE, dann brauche ich für groupID
1. Aber die Fragen zu bekommen, ich weiß nicht, die Fragen will, wenn nur 1 in (das Szenario vergangen I gebe ich).
Hier ist die 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
Ich erhalte dieses Ergebnis, wenn ich zu meinem circumstancemaster
Tisch verbinden. Ich erwarte, dass das Ergebnis, aber ich brauche eine Möglichkeit, zu sagen: „Wenn eine der Zeilen in der gleichen Gruppe Nullwert hat, nichts zurückgeben“:
----------------------------------------------------------------
| CircumstanceID | CircumstanceGroupID | CircumstanceValueGiven|
----------------------------------------------------------------
| 1 | 1 | NULL |
----------------------------------------------------------------
| 2 | 1 | BEEFOR |
----------------------------------------------------------------
Was meinst du, wenn alle Zeilen einen geraden Nullwert haben, zeige nicht alle Ergebnisse an? oder nur die Zeile anzeigen hat keinen Nullwert –