Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

SQL - Operacja odejmowania 2 wartości z 1 tabeli SQL

01 Paź 2016 18:07 1539 9
  • Poziom 10  
    Rzecz wydaje się prosta. Jest tabela SQL o strukturze:

    data1, wartość1,numer_seryjny
    data2, wartość2,numer_seryjny

    Próbuję napisać Select, które wykona operację odejmowania 'wartość1' - 'wartość2'

    Proste, a nie mogę tego ogarnąć.
    Help :-)
  • Pomocny post
    Poziom 38  
    Może się udać:

    Kod: sql
    Zaloguj się, aby zobaczyć kod


    pytanie lekko w krzakach, odpowiedź też.

    Ten zewnętrzy select jest specyficzny, nie wykonuje fizycznego "ruchu" bazą danych, nie selekcjonuje z żadnej tabeli, i to jest w pełni poprawne.
    Ważne aby wewnętrzne selekty zwracały jedno pole z jednego wiersza.

    Nie obiecuję że zadziała z każdym możliwym SQL. Klauzule 'as' nie twierdzę że są konieczne / potrzebne

    EDIT

    Kod: sql
    Zaloguj się, aby zobaczyć kod


    Na Microsofcie SQL działa, daje jedynkę. Zmień te wewnętrzne selekty aby każdy dawał jedną wartość z realnej bazy i na pewno się uda.
  • Pomocny post
    Poziom 38  
    Dżyszla napisał:
    A to jeszcze pytanie, jaki silnik, bo nie każdy pozwoli identyczne rozwiązanie zastosować.

    Dość uniwersalnie:
    Kod: sql
    Zaloguj się, aby zobaczyć kod


    Aha, ty to w pionie (nie w jednym skalarze) rozwążałeś. Myślałem przejściowo i o tym.
    'union' może być lepszy jak zamawiający dane wymyśla które pola jeszcze by chciał podsumowanie, teraz jedno, jutro zmieni na drugie a pojutrze wszystkie trzy
  • Poziom 10  
    Dzięki Panowie, działa.
    Baza chodzi na silniku Microsoftu - MS SQL Server 2008 R2

    Dodano po 37 [minuty]:

    A co z przypadkiem gdy select zwraca większą ilość danych spełniających warunek where?
  • Poziom 38  
    małe duże litery mylisz.
    I zawsze bezpieczniej jest wewnętrzne selecty objąć w nawias, to chyba niczemu nie szkodzi. Coś tam nawiasy nie grają
  • Poziom 38  
    Z tym aliasowaniem może tak być, symulowana tabela (bo union taką tworzy), być może musi mieć nazwę ...

    Co do dwóch dróg rozwiązania, oczywiście że są, są jakościowo różne. Dyskomfort sie zaczął od przykładu danych bez kluczy pierwotnych (również bez pozostałych metadanych). Jest czymś innym "czajenie się" na jeden "palcem pokazany" rekord (po kluczu pierwotnym czy innym unikalnym), a czym innym "wszystkie które mają daną" choćby w obecnym stanie naszej wiedzy ich ilość była jeden (lub z góry nastawiają się na wiele).
    BTW oba w różny sposób się wyłożą w razie nie istnienia oczekiwanych danych, mają mniejszą czy większą podatność na złożone wyrażenia (przekształcenia danych) itd ...

    Myślę że rozstrzygające jest założenie projektowe, co to "NAPRAWDĘ" realizuje.