webForumDet fria alternativet

gruppera efter dagar??

10 svar · 351 visningar · startad av eddy1

eddy1Medlem sedan aug. 2001960 inlägg
#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

PaceMedlem sedan juni 20015 947 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? ;)

eddy1Medlem sedan aug. 2001960 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???

PaceMedlem sedan juni 20015 947 inlägg
#4

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

eddy1Medlem sedan aug. 2001960 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)
PaceMedlem sedan juni 20015 947 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å.

eddy1Medlem sedan aug. 2001960 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..

eddy1Medlem sedan aug. 2001960 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(

Peter SMedlem sedan dec. 20025 484 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)
eddy1Medlem sedan aug. 2001960 inlägg
#10

Fan,
Reeespect mannen!! det funkar!

Peter SMedlem sedan dec. 20025 484 inlägg
#11

:bire

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb