webForumDet fria alternativet
Logga in / Bli medlem

gruppera efter dagar??

Databaser & SQL

10 svar · 352 visningar · startad av eddy1

Medlem sedan aug. 2001969 inlägg
Frågan#1

Hej. har suttit många timmar idag med sql men blir tokig..

Jag vill alltså gruppera alla poster i en databas per dag, cellen "c_date" som innehållet datumet är i formatet DateTime.. ''

har provat med datepart men får det inte att funka, fick även detta förslag:
YEAR(c_Date) + MONTH(c_Date) + DAY(c_Date)

men det blir ju en skit konstig summa om det skrivs ut!

Så här ser koden ut nu, IGEN...

Select left(c_date,10), avg(oc) as av from (select count(*) as oc from Hits where id="& Session("id") &" and page_id="& Session("page_id") &" group by left(c_date,10)) dt;

dett averkar ju som om han inte ser skillnad på 2006-01-01 och 2007-01-01 ??

Mvh

Medlem sedan juni 20019 024 inlägg
#2
GROUP BY YEAR(c_date), MONTH(c_date), DAY(c_date)

eddy1 skrev:

dett averkar ju som om han inte ser skillnad på 2006-01-01 och 2007-01-01 ??

Är du säker på att det är en han? ;)

Medlem sedan aug. 2001969 inlägg
#3

Fel av mig, jag vet inte hur det är hos er men min heter Lisa och är en hon..

så här blev koden i sql manager express..
Men det funkar ändå inte..

SELECT     YEAR(c_Date) AS Expr1, MONTH(c_Date) AS Expr2, DAY(c_Date) AS da, COUNT(*) AS oc
FROM         Hits
WHERE     (Customer_ID = 3) AND (Page_ID = 1)
GROUP BY YEAR(c_Date), MONTH(c_Date), DAY(c_Date)
ORDER BY Expr1, Expr2, da DESC

detta ger ju fyra fält. JAg vill ju ha datum fältet samt antalet???

Medlem sedan juni 20019 024 inlägg
#4

Jag skrev aldrig att du skulle ändra fälten i din SELECT-sats. Bara GROUP BY.

Medlem sedan aug. 2001969 inlägg
#5

jag har provat allt nu...

jag vill bara få till en sats som grupperar efter dagar och skriver ut antal??
Men inte går det...

denna funkar inte, men har jag "LEFT(c_Date, 10)" i group by så funkar det

SELECT     LEFT(c_Date, 10) AS Expr1, COUNT(*) AS oc
FROM         Hits
WHERE     (Page_ID = 1) AND (ID = 3)
GROUP BY YEAR(c_Date), MONTH(c_Date), DAY(c_Date)
Medlem sedan juni 20019 024 inlägg
#6

eddy1 skrev:

denna funkar inte, men har jag "LEFT(c_Date, 10)" i group by så funkar det

Använd det då.

Medlem sedan aug. 2001969 inlägg
#7

a det funkar ju bara halv bra, inget fel i sql satsen men man vet ju inte formatet på datumet så det är ju osäkert hur många tecken man ska använda till left??
Du har ju säkert rätt med ditt förslag för man ska ju använda datum funktioner..

Men
"GROUP BY YEAR(c_Date), MONTH(c_Date), DAY(c_Date)" är ju okey men för att använda den måste jag använda samma funktion i början på select satsen, alltså
"SELECT YEAR(c_Date), MONTH(c_Date), DAY(c_Date), Count(*) as cn"
annars får man felmeddelande...

Men skriver jag detta ändrar sql manager Express automatiskt till:

SELECT YEAR(c_Date) AS Expr1, MONTH(c_Date) AS Expr2, DAY(c_Date) AS Expr3, COUNT(*) AS oc

då ger ju detta 4 fält... Fan va lurigt detta var..

Medlem sedan aug. 2001969 inlägg
#8

ÄR det´ta ej möjligt att lösa ?? tyckte ända det var en relativt enkel fråga men ändå inte x(

Medlem sedan dec. 20025 483 inlägg
#9
SELECT    convert(char(10), c_Date, 20) AS Expr1, COUNT(*) AS oc
FROM         Hits
WHERE     (Page_ID = 1) AND (ID = 3)
GROUP BY convert(char(10), c_Date, 20)
Medlem sedan aug. 2001969 inlägg
#10

Fan,
Reeespect mannen!! det funkar!

Medlem sedan dec. 20025 483 inlägg
#11

:bire

265 ms totalt · 4 externa anrop · v20260731065814-full.0583408b
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)