2011-08-08 12 views
13

Chciałbym zmodyfikować dane, wybierając je w wewnętrznej zapytania i liczyć jeden z nich zmodyfikowane .. Daje błąd ..Wybierz z zagnieżdżony select T-SQL

select count(cvs) from 
(
    select 
    cvs, 
    (case Citycode when 123 then 'test' else 'other' end) as CityName , 
    (case ProductCode when '000' then 'test3' when 'ss' then 'xtr' else 'ddd' end) as CardName 
    from Applications 
) 
+2

Co to jest błąd? – JNK

+1

Jeśli wszystko, na czym zależy, to liczba, dlaczego wybierasz wszystkie inne dane? Nie grupujesz ani nie agregujesz żadnych danych z zapytań podrzędnych, więc dlaczego nie wystarczy wybrać liczbę bez zapytania dodatkowego? –

+4

Prawdopodobnie brakuje ci tylko pseudonimu. 'Wybierz Count (*) z (...) A' – YetAnotherUser

Odpowiedz

45

trzeba dać aliasu do podzapytania:

select count(x.cvs) from 
(
    select 
    cvs, 
    (case Citycode when 123 then 'test' else 'other' end) as CityName , 
    (case ProductCode when '000' then 'test3' when 'ss' then 'xtr' else 'ddd' end) as CardName 
    from Applications 
) x 
+0

To właśnie ja szukam =)) thanx Dalen !!! Wiem, jak liczyć, ale mój przypadek był inny .. Myślę, że dostał to, czego szukam ... – zapoo

+0

Cieszę się, że pomogło, w następnym razem wyjaśnij trochę lepiej, czego szukasz, więc unikniesz wszystkich tych spadków – Dalen

0

Okazuje się zapytanie można uprościć do ..

SELECT COUNT(cvs) FROM Applications 

Czy istnieje powód, dla którego masz zagnieżdżone zaznaczenie i ignorujesz inne kolumny, które zostały wybrane?

+0

thx Quintin, ale moja sprawa była powiązana z użyciem aliasu dla sub-zapytania – zapoo

1

Dlaczego nie zrobić tego zamiast tego?

SELECT COUNT(cvs) 
    FROM Applications 
+1

Zgaduję * (mając nadzieję) * ma więcej logiki, że nie zawierał – JNK

+0

thx joe, ale mój przypadek był powiązany z użyciem aliasu dla sub-zapytania – zapoo

0

dwie rzeczy widzę off the bat:

1 - Nie trzeba zagnieżdżony podkwerenda za to, co robisz w przykładzie. Można tak łatwo zrobić:

SELECT COUNT(cvs) FROM application

2 - Musisz alias podzapytania, jak (<subquery>) as SubQ

+0

thx alias JNK dla sub zapytanie jest tym, czego szukałem. – zapoo