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 null
Werten in den [h]
Spalten entfernen ?
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 having
Klausel ü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.
Lass mich ein paar Worte sagen