Bästa Sättet Att åtgärda Brister 3504 Sql
September 21, 2021Rekommenderas: Fortect
Om du hanterar fel 3504 sql måste den här användarhandboken hjälpa dig.
Foto av John Schnobrich från Unsplash
I den här artikeln kommer jag att förklara om du vet varför felet uppstod [Fel 3504] [SQLState HY000] Det valda icke-aggregerade värdet ska vara en del av en länkad institution när du kör en SQL-fråga med avseende på Teradata. Jag kommer att beskriva den vanliga orsaken till problemet och visa hur du kan undvika allt i framtiden.
Problem
Fel 3504 uppstår när datafiler samlas in i Teradata med någon sorts GROUP BY -sats. Det spelar egentligen ingen roll om du släpper DML ask (SELECT) eller gillar Men när DDL -teknikerna (som VIEW) har du ett exakt fel. Det enklaste sättet att få ett fel är:
VÄLJ EMPLOYEE_ID, AVG (LÖN)ANSTÄLLDABESTÄLLNING 1;
Syftet med ovanstående fråga är verkligen att beräkna den genomsnittliga lönen som oftast är associerad med alla säljare. Detta är dock kanske inte tillräckligt
Inget GROUP BY -uttalande
När du använder grupperingsåtgärder (som SUMMA, Räkna, du genomsnitt), kom ihåg att använda GROUP BY -erbjudandet mellan WHERE -klausulen och av den anledningen HAVING / ORDER BY. SQL -satsen för operationen är alltför väl följande:
- VÄLJ
, AVG (attribut) - FRÅN tabell1
- JOIN (INNER JOINT // VÄNSTER TILL HÖGER eller FULLT YTTRE JOINT) tabell2
- PÅ tabell1.attribut matchar tabell2.attribut
- Om
- GRUPP EFTER
- ÄR
- BESTÄLLNING AV
Undantaget är att klienter inte ska låta dem använda GROUP BY -termen när de grupperar data som saknar många andra attribut, men det råkar sällan användas.
Antal dåliga attribut
Problem Utvalda icke-aggregerade respekter måste vara partiella, dvs eftersom en associerad grupp också kan äga rum. Kanske har du redan en GROUP BY -klausul i din fråga, och slutresultatet listan över missförstånd i en GROUP BY -klausul är ofta inte hel, dvs inte alla argument som används med grupperingsfunktioner inkluderades i den faktiska BY -gruppsträngen, till exempel: < /p>
VÄLJ EMPLOYEE_ID, AVG (LÖN)S ÅR, ANSTÄLLDAEMPLOYEE_ID GROUPBESTÄLLNING 1.2;
I föregående översikt, efter SELECT -uttalandet, behåller vårt team de två attributen EMPLOYEE_ID för att inte tala om YEAR, och endast EMPLOYEE_ID -kvaliteten tillhör GROUP BY -termerna – den här funktionen kommer inte att syfta.
Lösning
Beroende alltid på GROUP BY -klausulen för att fungera
Inom ekonomi används frågor med gruppoperationer utan ytterligare attribut förvånansvärt sällan, till exempel:
VÄLJ TOTALT (LÖN)ANSTÄLLDA;
Du kan fint testa eller söka efter generiska fakta eller patientnummer, till exempel i början av ett företag. Vi behöver vanligtvis mer komplexa beräkningar. Kom därför alltid ihåg att inkludera GROUP för en BY -klausul.
Se till att din argumentlista är lämpligast
Gör det alltid till ett nummer som matchar argumentlistan för SELECT -satsen med kvantitativa attribut för hela GROUP BY -kommandot, till exempel:
VÄLJ EMPLOYEE_ID, YEAR, GENomsnitt (LÖN)ANSTÄLLDAEMPLOYEE_ID GROUP, ÅRBESTÄLLNING 1.2;
Om du uppskattade det här inlägget, lägg till ett svar nedan eller dela det på någon Twitter, Facebook, LinkedIn eller annan obegränsad nätverkswebbplats.
Tack för den speciella utvecklingen!
Fel 3504 uppstår vid sammanslagning av dokument i Teradata som genererar användning av GROUP BY -klausulen. Oavsett om du bara skickar in en DML -fråga (SELECT) eller skapar den även under en DDL -funktion (som VIEW), får du det tidigare felet. Här är det enklaste sättet att bli ett fel: Behovet av denna fråga är att komma fram till genomsnittslönen för alla vanliga människor. Men du vill nog ha något? Är du trött på att din dator går långsamt? Är det full av virus och skadlig kod? Var inte rädd, min vän, för Fortect är här för att rädda dagen! Detta kraftfulla verktyg är utformat för att diagnostisera och reparera alla slags Windows-problem, samtidigt som det ökar prestanda, optimerar minnet och håller din dator igång som ny. Så vänta inte längre - ladda ner Fortect idag! När du använder grupperingsåtgärder (till exempel SUMMA, RÄKNA, Du genomsnitt), kom ihåg att använda GROUP BY -klausulen rrn mellan kommandot WHERE och resultatet HAVING / ORDER BY. Att hämta din nuvarande SQL -operation görs på följande sätt: Ett undantag – GROUP BY -klausulen när du samlar in data utan att få ytterligare attribut kommer inte att gå vart som helst, men det används sällan. problem genom att denna GROUP BY -sats alltid är partiell, dvs inte alla argument som används för att gruppera funktioner inkluderades inte inuti BY -gruppsträngen, för plats: Med ovanstående argument vill jag efter SELECT -satsen fler attribut EMPLOYEE_ID och YEAR, ett med bara ett EMPLOYEE_ID -attribut för att involvera en GROUP BY -klausul – dess enhet fungerar inte. I praktiken med sökfördelar används gruppfunktionen utan ytterligare komponenter är mycket sällsynt, för produkt: Du är säker under eller under testningen på jakt efter summor och för universella tal, till exempel livsstilen för dessa företag från de förvånansvärt begynnande spetsarna. Vi behöver vanligtvis mycket komplexa beräkningar. Kom därför alltid ihåg att du kan kombinera GROUP med BY -villkoret. Kontrollera alltid att argumentutbudet i SELECT -satsen matchar vårt eget attributförhållande i GROUP BY -kommandot, till exempel: Om du gillade den här webbplatsen nära dig, använd gärna kommentaren nedan eller skriv ditt inlägg på Facebook, Twitter, LinkedIn eller något annat socialt nätverk. VÄLJ EMPLOYEE_ID, AVG (LÖN)ANSTÄLLDABESTÄLLNING AV 1;
Inget GROUP BY -uttalande
Rekommenderas: Fortect
Antal ogiltiga attribut
VÄLJ EMPLOYEE_ID, YEAR, GENomsnitt (LÖN)ANSTÄLLDAEMPLOYEE_ID GROUPBESTÄLLNING 1.2;
Lösning
Använd alltid GROUP BY -satsen för att gruppera kapacitet
VÄLJ TOTALT (LÖN)ANSTÄLLDA
Se till att argumentlistan är korrekt
VÄLJ EMPLOYEE_ID, YEAR, GENomsnitt (LÖN)ANSTÄLLDAEMPLOYEE_ID GROUP, ÅRBESTÄLLNING 1.2;
Tack alla avancerade!
Error 3504 Sql
Fout 3504 Sql
Fehler 3504 Sql
오류 3504 Sql
Erreur 3504 Sql
Errore 3504 Sql
Error 3504 Sql
Oshibka 3504 Sql
Blad 3504 Sql
Erro 3504 Sql