666 messaggi dal 10 febbraio 2006
Ciao

[Sqlserver 2005]

Ho una tabella "Mytable"
con il campo "id" e il campo "giornoDellaSettimana"

Voglio fare una select ordinando i dati in modo da ricavare i valori per esempio così:
id 1 giornoDellaSettimana Lunedì
id 2 giornoDellaSettimana Lunedì
id 3 giornoDellaSettimana Martedì
id 4 giornoDellaSettimana Mercoledì
id 5 giornoDellaSettimana Mercoledì
id 6 giornoDellaSettimana Mercoledì
id 7 giornoDellaSettimana Giovedì
ecc ecc

con l'orderby si può ottenere un risultato del genere? con quale sintassi?
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
Giovanni_3478 wrote:
Ciao

[Sqlserver 2005]

Ho una tabella "Mytable"
con il campo "id" e il campo "giornoDellaSettimana"

Voglio fare una select ordinando i dati in modo da ricavare i valori per esempio così:
id 1 giornoDellaSettimana Lunedì
id 2 giornoDellaSettimana Lunedì
id 3 giornoDellaSettimana Martedì
id 4 giornoDellaSettimana Mercoledì
id 5 giornoDellaSettimana Mercoledì
id 6 giornoDellaSettimana Mercoledì
id 7 giornoDellaSettimana Giovedì
ecc ecc

con l'orderby si può ottenere un risultato del genere? con quale sintassi?

sicuramente si puo' fare, ma non e' ben chiaro "il punto di partenza".. [id] deve essere "rigenerato" o solo proiettato (dal tuo risultato questo non e' chiaro).. la colonna [giornoDellaSettimana] cosa contiene, che tipo di dato e'?
puoi per favore postare un DDL ridotto della tabella con alcune righe di INSERT INTO per popolarla e definire su quei dati il risultato che vuoi ottenere?
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
666 messaggi dal 10 febbraio 2006
id deve essere solo proiettato, il suo valore non deve essere cambiato

Select
CREATE TABLE [dbo].[Test AspNet](
  [id] [int] IDENTITY(1,1) NOT NULL,
  [giorno della settimana] [nvarchar](350)


Insert
Insert into [Test AspNet] ([giorno della settimana]) values(N'Lunedì')
Insert into [Test AspNet] ([giorno della settimana]) values(N'Martedì')
Insert into [Test AspNet] ([giorno della settimana]) values(N'Mercoledì')
Insert into [Test AspNet] ([giorno della settimana]) values(N'Giovedì')
Insert into [Test AspNet] ([giorno della settimana]) values(N'Venerdì')
Insert into [Test AspNet] ([giorno della settimana]) values(N'Sabato')
Insert into [Test AspNet] ([giorno della settimana]) values(N'Domenica')
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
Giovanni_3478 wrote:
id deve essere solo proiettato, il suo valore non deve essere cambiato
Select
CREATE TABLE [dbo].[Test AspNet](
[id] [int] IDENTITY(1,1) NOT NULL,
[giorno della settimana] [nvarchar](350)

Insert
Insert into [Test AspNet] ([giorno della settimana]) values(N'Lunedì') Insert into [Test AspNet] ([giorno della settimana])
values(N'Martedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Mercoledì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Giovedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Venerdì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Sabato') Insert into [Test AspNet] ([giorno della settimana]) values(N'Domenica')

non ho ancora ben compreso l'architettura..
con questo intendo che la tabella [dbo].[Test AspNet] possa quindi contenere n righe e non solo le 7 dei giorni che hai indicato.. diversamente ti basta ovviamente ordinare per [dbo].[Test AspNet].[Id] visto che tu li hai gia' ordinati come ti si conviene..
partendo quindi dal "mio presupposto", che cioe' possano esserci n righe e che quindi non necessariamente id=1 sia pari a lunedi, puoi pero' tranquillamente utilizzare una tabella temporanea da mettere in join con la tua tabella [dbo].[Test AspNet] e proiettarne il risultato con l'ordinamento desiderato... questo ti permette anche eventualmente di modificare l'indicazione del primo giorno della settimana, che potrebbe ad esempio essere "domenica" invece di "lunedi"..


SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE [dbo].[Test AspNet](
[id] [int] IDENTITY(1,1) NOT NULL,
[giorno della settimana] [nvarchar](350)
);
GO

Insert into [Test AspNet] ([giorno della settimana]) values(N'Venerdì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Sabato') Insert into [Test AspNet] ([giorno della settimana]) values(N'Domenica') Insert into [Test AspNet] ([giorno della settimana]) values(N'Lunedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Martedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Mercoledì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Giovedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Venerdì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Sabato') Insert into [Test AspNet] ([giorno della settimana]) values(N'Domenica') Insert into [Test AspNet] ([giorno della settimana]) values(N'Lunedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Martedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Mercoledì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Giovedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Venerdì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Sabato') Insert into [Test AspNet] ([giorno della settimana]) values(N'Domenica') Insert into [Test AspNet] ([giorno della settimana]) values(N'Lunedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Martedì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Mercoledì') Insert into [Test AspNet] ([giorno della settimana]) values(N'Giovedì')
GO
PRINT 'tabella di appoggio per la definizione dell''ordinale del giorno della settimana';
DECLARE @t table (
[id] [int],
[giorno della settimana] [nvarchar](350)
);

Insert into @t values(1, N'Lunedì')
Insert into @t values(2, N'Martedì')
Insert into @t values(3, N'Mercoledì')
Insert into @t values(4, N'Giovedì')
Insert into @t values(5, N'Venerdì')
Insert into @t values(6, N'Sabato')
Insert into @t values(7, N'Domenica')

SELECT a.[id], a.[giorno della settimana]
FROM [dbo].[Test AspNet] a
JOIN @t t
ON t.[giorno della settimana] = a.[giorno della settimana] ORDER BY t.[id];
GO
DROP TABLE [dbo].[Test AspNet];
--<--------
tabella di appoggio per la definizione dell'ordinale del giorno della settimana
id giorno della settimana
---------
------------------------
4 Lunedì
11 Lunedì
18 Lunedì
5 Martedì
12 Martedì
19 Martedì
6 Mercoledì
13 Mercoledì
20 Mercoledì
7 Giovedì
14 Giovedì
21 Giovedì
1 Venerdì
8 Venerdì
15 Venerdì
2 Sabato
9 Sabato
16 Sabato
3 Domenica
10 Domenica
17 Domenica

saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
666 messaggi dal 10 febbraio 2006
partendo dal "mio presupposto", che cioe' possano esserci n righe e che quindi non necessariamente id=1 sia pari a lunedi

Con la soluzione relativa a quanto sopra ,
usando cioè la join
ho risolto.

Grazie mille

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.