Mam tabelę z listą wartości. -1 to pusta wartość:
ID FieldType1A FieldType1B FieldType2A FieldType2B Person
1 15 14 10 -1 1
2 16 -1 12 10 1
3 17 -1 5 6 1
4 6 -1 7 -1 2
...
Wynik powinien być:
Person FieldType1 FieldType2
1 4 5
2 1 1
Istnieje tabela użytkowników z listą identyfikatorów użytkowników, czy istniałby sposób na iterację po tej liście wartości w celu wygenerowania listy osób w zestawie wyników (0, jeśli typy pól są całkowicie poprawne, ponieważ są tylko zliczane)? Myślę, że odpowiedź na Liczba wartości kolumn T-SQL jest krokiem w moim kierunku Próbuję iść, ale nie jestem pewien, jak połączyć kolumny, które są takie same (A/B pozwalają na listę odpowiedzi). To i jestem zainteresowany połączeniem wszystkich prawidłowych wartości, ponieważ nie próbuję zliczyć liczby każdej prawidłowej odpowiedzi.
2 odpowiedzi
Możesz użyć wyrażenia CASE
, aby zmienić wszystkie wartości nieujemne na 1, a wartości -1 na 0, a następnie je zsumować.
SELECT Person,
SUM(CASE WHEN FieldType1A <> -1 THEN 1 ELSE 0 END) +
SUM(CASE WHEN FieldType1B <> -1 THEN 1 ELSE 0 END) AS FieldType1,
SUM(CASE WHEN FieldType2A <> -1 THEN 1 ELSE 0 END) +
SUM(CASE WHEN FieldType2B <> -1 THEN 1 ELSE 0 END) AS FieldType2
FROM YourTable
GROUP BY Person
SELECT Person,
count(nullif(FieldType1A, -1)) + count(nullif(FieldType1B, -1)) as FieldType1,
count(nullif(FieldType2A, -1)) + count(nullif(FieldType2B, -1)) as FieldType2
FROM yourtable
GROUP BY person
Podobne pytania
Powiązane pytania
Nowe pytania
tsql
T-SQL (Transact Structured Query Language) to rozszerzenie funkcjonalności SQL obsługiwanej przez Sybase ASE i Microsoft SQL Server. Nie używaj tego tagu do zapytań związanych z MySQL, PostgreSql, Oracle (Pl / SQL). Należy pamiętać, że kod SQL, który jest zapisywany przy użyciu LINQ, również nie będzie częścią tego tagu. Ten znacznik został stworzony specjalnie do zaawansowanego programowania SQL przy użyciu programu Microsoft SQL Server.