Beste Tactiek Om Fout 3504 Sql Op Te Lossen

September 21, 2021 By Mohammed Butcher Off

 

Aanbevolen: Fortect

  • 1. Download en installeer Fortect
  • 2. Open het programma en klik op "Scannen"
  • 3. Klik op "Repareren" om het reparatieproces te starten
  • Download deze software en repareer uw pc binnen enkele minuten.

    Als u te maken krijgt met onoplettendheid 3504 sql, zou deze gebruikershandleiding u moeten helpen.

     

     

    < img alt = "" Arie onzichtbaar = "true" role = "presentatie" meestal de SRC = "data: image / SVG + XML; base64 PHN2ZyBoZWlnaHQ9IjEwNjciIHdpZHRoPSIxNjAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIvPg ==">

    Foto door John Schnobrich op Unsplash

    In dit type artikel zal ik uitleggen waarom de belangrijkste fout is opgetreden [Fout 3504] [SQLState HY000] De geselecteerde niet-geaggregeerde waarde moet deel blijven uitmaken van een gekoppelde groep wanneer ooit een SQL-query wordt uitgevoerd in Teradata. Ik zal de gemeenschappelijke bijdrage aan het probleem beschrijven en de klant laten zien hoe u het in de toekomst kunt voorkomen.

    Probleem

    Fout 3504 treedt op bij het groeperen van belangrijke infobestanden in Teradata met behulp van de GROUP BY-clausule. Het maakt niet uit, zolang je de DML-onzekerheid (SELECT) of like maar laat vallen. Tijdens DDL-technieken (zoals VIEW) creëer je echter de nieuwe precieze fout. De gemakkelijkste manier om een ​​foutmelding te krijgen is:

     SELECTEER WERKNEMER_ID, AVG (SALARIS)MEDEWERKERSBESTELLING 1; 

    error 3504 sql

    Het eigenlijke doel van de bovenstaande query is om het gemiddelde salaris van praktisch verkopers te berekenen. Dit is echter waarschijnlijk absoluut niet genoeg

    Geen GROUP BY nieuws

    Wanneer u groepsaspecten gebruikt (zoals SUM, COUNT, You avg), vergeet dan niet om u te helpen de GROUP BY-component te gebruiken om de WHERE-component te vergelijken en dus HAVING / ORDER BY. Het SQL-onderzoek voor de bewerking is precies het volgende:

    1. SELECTEER , AVG (attribuut)
    2. UIT tabel1
    3. JOIN (BINNENVERBINDING // LINKS NAAR RECHTS of als alternatief VOLLEDIGE BUITENVERBINDING) tabel2
    4. ON table1.attribute komt overeen met table2.attribute
    5. Over
    6. GROEP NA
    7. IS
    8. BESTEL OP

    De uitzondering is dat je ze de GROUP BY-term niet wilt laten gebruiken bij het groeperen van gegevens zonder veel andere attributen te selecteren, maar het is ooit eerder gebruikt.

    Aantal ongeldige opties

    Probleem Geselecteerd niet-geaggregeerd bedrag moet gedeeltelijk zijn, d.w.z. er kan ook een gerelateerde cirkel plaatsvinden. Misschien hebben ze al een GROUP BY-aanbieding in uw zoekopdracht, en daarom is een soort lijst van misverstanden in de GROUP BY-clausule vaak onvolledig, dat wil zeggen dat niet alle argumenten die met bosfuncties worden gebruikt, zijn opgenomen in de BY-groepsreeks, bijvoorbeeld:

     SELECTEER WERKNEMER_ID, AVG (SALARIS)S JAAR, WERKNEMERSWERKNEMER_ID GROEPBESTELLEN 1.2; 

    In de bovenstaande highlights beheren we na de SELECT-instructie de 2 attributen EMPLOYEE_ID en YEAR, en alleen het EMPLOYEE_ID attribuut hoort bij de GROUP BY-voorwaarde – deze functie zal niet werken.

    Oplossing

    Gebruik altijd de GROUP BY-clausule voor functies

    In de economie worden zoekopdrachten met groeperingsfuncties die geen extra attributen hebben bijna nooit gebruikt, bijvoorbeeld:

     SELECTEER TOTAAL (SALARIS)MEDEWERKERS ; 

    Je kunt er gerust mee spelen of zoeken naar generieke nummers van patiëntnummers van bijvoorbeeld de start van een bedrijf. We hebben typisch meer complexe berekeningen nodig. Denk er daarom in de meeste gevallen aan om GROUP op te nemen met een echte BY-clausule.

    Zorg ervoor dat de argumentenlijst van een persoon correct is

    Maak er altijd een getal van dat overeenkomt met de argumentenlijst van de SELECT-termen met kwantitatieve kenmerken van het GROUP BY-commando, bijvoorbeeld:

     SELECT EMPLOYEE_ID, JAAR, GEMIDDELDE (SALARIS)MEDEWERKERSWERKNEMER_ID GROEP, JAARBESTELLEN 1.2; 

    Als je het bericht leuk vond, voeg dan een opmerking toe, de volgende zijn enkele of deel het op je Twitter, Facebook, LinkedIn of een andere sociale netwerkwebsite.
    Bedankt voor uw!