Új hozzászólás Aktív témák
-
martonx
veterán
-
martonx
veterán
válasz Petya25 #1847 üzenetére
Írsz rá egy kis programocskát, aztán az pont ezt fogja tudni, legalábbis a táblázat részéig elég triviális.
Az más kérdés, hogy diagramm nehezen lesz benne, bár kerülő utakkal biztos tudsz diagrammot képként generáltatni valamilyen eszközzel, és a képet már bele tudod szúrni a html formátumú emailbe.Én kérek elnézést!
-
Ispy
veterán
válasz Petya25 #1868 üzenetére
Ha .net, akkor csinálsz egy SqlDataReader objektumot, aminek megadott az SQL utasítást (SELECT * FROM <tablad_neve> WHERE <datum_where>), ami visszaadja a dátumot, ha benne van a táblában.
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
Ispy
veterán
-
nyunyu
félisten
válasz Petya25 #1920 üzenetére
Mi a datum formatuma?
Pl. ha a win '2013-08-12'-ot ad vissza, az nem fog betalalni a '2013.08'-hoz.
Lehet, hogy egyszerubb lenne a year, month fuggvenyekkel szetdarabolni+a lekerdezesben ujra osszerakni a datumot, es akkor nem okozna gondot az eltero formatum.
SELECT * FROM honapok WHERE ho = " + "'" + YEAR(CAST(vizsgaltnap AS DATETIME)) + "." + MONTH(CAST(vizsgaltnap AS DATETIME)) + "'" + " and lezarva = 1
Legalabbis az SQL Server igy castolva siman megeszi a '2013-08-12', '2013.08.12', '08-12-13' formatumot is.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz Petya25 #1924 üzenetére
Debugnal megnezted, mi a lekerdezes string aktualis erteke?
Ezt kezzel feladva Accessnek mi az eredmeny?Esetleg atirni a *-ot COUNT(*)-ra, ugy mindig lesz eredmenye a querynek, talalatok szamatol fuggoen nullanal nagyobb vagy 0.
Hello IT! Have you tried turning it off and on again?
-
-
Ispy
veterán
válasz Petya25 #2943 üzenetére
Esetleg egy függvény, ami ciklusban szépen végigmászik az értékeken, majd megszámolja. WHILE cikklus, ami egy SUBSTRING-gel végigmegy a mező tartalmán, ha változik az érték, akkor egyel növeled a számlálót.
Nem tudom mekkora tábláról van szó, azért az ilyen függvényekkel óvatosan kell bánni.
Most így hirtelen ennyi infóból ezt csinálnám, de lehet másnak van jobb ötlete.
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
updog
senior tag
válasz Petya25 #2943 üzenetére
Window (analytic) function-ök? (LAG pl.) Milyen SQL?
Pl. Oracle SQL-ben ennyi, innentől úgy hasonlítod az értékeket ahogy akarod
select id, val, lag(val, 1) over(order by id) as prev_val from t_tabla;
[ Szerkesztve ]
"Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"
-
válasz Petya25 #2943 üzenetére
nem kötözködni akarok, de a pontos feladatmegfogalmazás sokat dobna a végeredményen
a fenti példában miért nem 4 a helyes végeredmény? van egy a->b átmenet, egy b->a átmenet, majd ugyanez mégegyszer.az eltolt soros joinolás, amit martonx kollégánk kiválóan bedobott, is 4-et adna eredményül.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
martonx
veterán
-
-
DS39
nagyúr
válasz Petya25 #3041 üzenetére
Először próbálkoztam ezzel, de akkor a belső select-ben az id-ből próbáltam levonni, ahelyett hogy kívül tenném ezt. Pedig így működik.
és már a belső select-et is kiküszöböltem:
declare @i int = (select id from ...)
select oszlop1, oszlop2, @i - ROW_NUMBER() over(order by oszlop1)
from ...Köszönöm a segítséget.
-
-
tm5
tag
válasz Petya25 #3201 üzenetére
Ajaj, akkor elég gyenge az a szerver... azért 2*600k-t joinolni nem kéne problémának lenni manapság.
Az a baj, hogy sortolni muszáj lesz, hogy ki tudd választani a dátum alapján az aktuális árat, Esetleg ha 2 dátum oszlop lett volna az ár táblában akkor egy "eladás_dátum beween tol and ig" kifejezéssel ki lehetett volna kapkodni a megfelelő sorokat sort nélkül is.[ Szerkesztve ]
-
sztanozs
veterán
-
sztanozs
veterán
válasz Petya25 #3703 üzenetére
Ne abban a táblában tartsd azokat a mezőket.
Select *-ra lejön minden mező.Le lehet tiltani bizonyos mezőkhöz való hozzáférést:
DENY SELECT ON dbo.tabla(mezo) TO [felhasznalo vagy role];
A legjobb ha letiltasz minden SELCT-et és írsz olyan VIEW-kat, amit szeretnél elérhetővé tenni.[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
nagyúr
válasz Petya25 #3827 üzenetére
declare @szam int = '2510';
select dateadd(mi, @szam,'2018/05/22');
2017-08-26 17:50:00.000[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
Ispy
veterán
válasz Petya25 #3827 üzenetére
Egész szám:
[szám]/60
Maradék:
[szám]%60
Pl:
declare @int integer = 2510
select @int/60, @int%60, , CAST(@int/60 AS varchar(10)) + ':' + RIGHT('00'+ CAST(@int%60 AS varchar(10)), 2)[ Szerkesztve ]
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
nagyúr
válasz Petya25 #3830 üzenetére
elvileg a dateadd simán időt is képes kezelni, viszont akkor a kezdő offsetet nem stringként, hanem time típusúként kell megadnod, így:
declare @starttime time(0) = '0:01';
declare @szam int = '2510';
select dateadd(mi, @szam,@starttime);
17:51:00
az előnye, hogy egyszerű, mint a bevert szög, mert nem kell castolgatni, trimmelegni.
a hátránya, hogy a nap feletti részt kapod meg, tehát ha 1 napnál több percre jön ki, akkor az óra:perc maradékot kapod, ahogy fent is látod (2510 perc több, mint egy óra). ha kell a nap is, akkor az már datetime.Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
-
tm5
tag
válasz Petya25 #3973 üzenetére
Valami ilyesmi kellene:
SELECT *
FROM (
SELECT nev, ora, darab
FROM tabla
)
PIVOT ( sum(darab) FOR (ora) IN (10 'Ora 10', 11 'Ora 11', 12 'Ora 12') )
ORDER BY 1 DESC
A 10, 11, 12 óra értékek ha szövegek akkor tedd őket is aposztofok közé, illetve annyi ilyen 'ora-érték' 'ora-alias' párt kell felvenned az IN szekcióba, ahány oszlopra van szükség. -
Louro
őstag
válasz Petya25 #4216 üzenetére
Szia,
egy minta....bár ezért nem csípem az MSSQL-t....tengernyi sok CONVERT kell sokszor.
;WITH base AS (
SELECT GETDATE()-10 t
UNION
SELECT GETDATE()-8
UNION
SELECT GETDATE()
)
SELECT CONVERT(DATETIME,AVG(CONVERT(FLOAT,t)))
FROM BASESzóval először FLOAT-ba alakítod, majd a kapott átlagot visszaalakítod dátummá.Remélem tudtam segíteni.
[ Szerkesztve ]
Mess with the best / Die like the rest
-
nagyúr
válasz Petya25 #4219 üzenetére
a fekete mágiát megcsinálja helyetted a time_to_sec, és a sec_to_time. közéjük beversz egy avg-t.
select SEC_TO_TIME(avg(TIME_TO_SEC(ido))) from tabla;
a törtetkerekítilevágja.feltétele, hogy az
ido
, aztime(6)
, és a jelentése nem időpont, hanem időtartam.[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz Petya25 #4225 üzenetére
túlfolyik az integeren. sajnos a datediff_big() csak a 2016os sql servertől érhető el. túl sok adatod van, ha tudod, egy where klauzával le kell csökkenteni a számukat.
ellenőrzésképpen ennek a selectnek is ugyanezt a hibát kellene dobnia.
SELECT avg(DATEDIFF(MILLISECOND, '12/01/2015','12/30/2015'));
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
Új hozzászólás Aktív témák
- Tyű-ha! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/512 FHD HUN
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5
- Bomba ár! HP EliteBook 830 G6 - i7-8G I 8GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- Bomba ár! Dell Latitude 5580 - i5-G6 I 8-16GB I 256 SSD I 15,6" FHD I HDMI I CAM I W10 I Garancia