So lassen Sie aggregierte Zeilen weg, wenn Spalten null sind

Matthew

Ich habe eine EAV-Tabelle, die ich in einige Spalten schwenke.

Ich möchte nicht eine Zeile zurück , wenn [h1], [h2]und [h3]alle sind null.

declare 
@h1 nvarchar(10) = 'A',
@h2 nvarchar(10) = 'B',
@h3 nvarchar(10) = 'C'

select 
[id],
[h1]  = isNull(max( case when [key] = @h1 then [value] end ), ''),
[h2]  = isNull(max( case when [key] = @h2 then [value] end ), ''),
[h3]  = isNull(max( case when [key] = @h3 then [value] end ), ''),
from some..db
group by [id]
having (
  and max( case when [key] = @h1 then [value] end) is not null
  and max( case when [key] = @h2 then [value] end) is not null
  and max( case when [key] = @h3 then [value] end) is not null
)

Wie kann ich diese Tabelle schwenken und Zeilen mit nullWerten in den [h]Spalten entfernen ?

Matthew

Basierend auf dem Feedback von @Charlieface.

declare 
@h1 nvarchar(10) = 'A',
@h2 nvarchar(10) = 'B',
@h3 nvarchar(10) = 'C'

select 
[id],
[h1]  = isNull(max( case when [key] = @h1 then [value] end ), ''), 
[h2]  = isNull(max( case when [key] = @h2 then [value] end ), ''),
[h3]  = isNull(max( case when [key] = @h3 then [value] end ), ''),
from some..db
group by [id]
having (
  max( case when [key] = @h1 then [value] end) is not null
  or max( case when [key] = @h2 then [value] end) is not null
  or max( case when [key] = @h3 then [value] end) is not null
)

Oder eine alternative havingKlausel über@astentx

having max(case when [key] in (@h1, @h2, @h3) then 1 end) is not null

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel