Pergunta : Primeiras e últimas fileiras de retorno, agrupadas por colunas.

Olá!,

Scenario: Cada usuário pode incorporar atualizações múltiplas em uma tabela, (talvez uma vez por mês, talvez cem vezes), durante todo o curso do ano. Eu quero retornar o GUID e o CUSTO para o primeiro e as últimas entradas agrupadas em cada usuário, mês e ano e etiquetá-lo então assim que nós sabemos qual é qual (para a entrada em uma filtrar do relatório/grupo perto): class= " lineNumbers " >
1 do >

i.e.: 2: 3: 4: 5: 6: 7: class= codeBody " prettyprint " do id= " codeSnippet822160 " do >
TIPO DO CUSTO GUID ENTRYDATE DO ANO DO MÊS DO USUÁRIO 
------------------------------------------------------------------------------------------------
USUÁRIO E MAIO 2010 22000 D490…      2010-05-21 11:59: 55.000 PRIMEIRAMENTE 
USUÁRIO E MAIO 2010 650 D223…      2010-05-31 23:00: 00.000 ÚLTIMO
USUÁRIO E JUNHO 2010 23500 DCA0…     2010-06-15 13:30: 18.000 PRIMEIRAMENTE 
USUÁRIO E JUNHO 2010 1000 6C90…      2010-06-24 11:50: 55.000 O class= >


Obviously de LAST

Here é uma tabela do exemplo que contem os dados que eu sou uso para o acima. problema que do

The eu encontrei que usando MIN/MAX em EntryDate é que o GUID causa o agrupamento a falhar. Eu põr em um exemplo das perguntas que eu tenho tentado mas para ser honestos, todos parecem ser inúteis, assim que seriam interessados para saber alguma outra pessoa viria no problema. class= " lineNumbers " >
1 do >

CUSTO GUID ENTRYDATE DO USERNAME 
13:05 do USUÁRIO A 1000 40879A8B-D964-DF11-8C38-001635810CA9 2010-05-21: 36.000
13:06 DO USUÁRIO A 2500 EA40279C-D964-DF11-8C38-001635810CA9 2010-05-21: 04.000
23:00 DO USUÁRIO B 6000 F62384AB-0A90-DF11-8C38-001635810CA9 2010-05-31: 00.000
23:00 DO USUÁRIO C 1975 AE2384AB-0A90-DF11-8C38-001635810CA9 2010-05-31: 00.000
23:00 do USUÁRIO D 12000 542384AB-0A90-DF11-8C38-001635810CA9 2010-05-31: 00.000
11:59 DO USUÁRIO E 22000 D490B55E-D064-DF11-8C38-001635810CA9 2010-05-21: 55.000
12:02 do USUÁRIO E 300 7EF4F8BB-D064-DF11-8C38-001635810CA9 2010-05-21: 32.000
23:00 DO USUÁRIO E 650 D22384AB-0A90-DF11-8C38-001635810CA9 2010-05-31: 00.000
23:00 do USUÁRIO F 1270 8A2384AB-0A90-DF11-8C38-001635810CA9 2010-05-31: 00.000
23:00 de G 800 782384AB-0A90-DF11-8C38-001635810CA9 2010-05-31 do USUÁRIO: 00.000
13:29 do USUÁRIO H 6400 6F672602-8278-DF11-8C38-001635810CA9 2010-06-15: 23.000
13:30 DO USUÁRIO E 23500 DCA02523-8278-DF11-8C38-001635810CA9 2010-06-15: 18.000
07:13 do USUÁRIO E 6620 26191E9C-1679-DF11-8C38-001635810CA9 2010-06-16: 06.000
11:50 do USUÁRIO E 1000 6C905CBE-867F-DF11-8C38-001635810CA9 2010-06-24: 55.000
13:29 DO USUÁRIO H 1500 FDD2B4F8-8178-DF11-8C38-001635810CA9 2010-06-15: 07.000
13:28 do USUÁRIO D 18750 490E50EE-8178-DF11-8C38-001635810CA9 2010-06-15: 50.000
07:02 DO USUÁRIO C 6640 CE53C31F-1579-DF11-8C38-001635810CA9 2010-06-16: 28.000
19:08 DO USUÁRIO C 6840 BE9526D4-7A84-DF11-8C38-001635810CA9 2010-06-30: 13.000
" desobstruído " class= do

Resposta : Primeiras e últimas fileiras de retorno, agrupadas por colunas.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
SELECIONAR T.USERNAME, T.MONTH, T.YEAR, Yt.COST, Yt.GUID, Yt.ENTRYDATE, “PRIMEIRAMENTE” [o tipo]
DE (
	SELECIONAR  O USERNAME, 
			MÊS (ENTRYDATE) [MÊS], 
			ANO (ENTRYDATE) [ANO], 
			(ENTRYDATE) MinDate MÍNIMO
	De YourTable
	GRUPO PELO USERNAME, MÊS (ENTRYDATE), ANO (ENTRYDATE) 
) T INTERNO JUNTA-SE a YourTable Yt EM T.USERNAME = Yt.USERNAME E T.MinDate = Yt.ENTRYDATE

UNIÃO

SELECIONAR T.USERNAME, T.MONTH, T.YEAR, Yt.COST, Yt.GUID, Yt.ENTRYDATE, “ÚLTIMO” [o tipo]
DE (
	SELECIONAR  O USERNAME, 
			MÊS (ENTRYDATE) [MÊS], 
			ANO (ENTRYDATE) [ANO], 
			Max (ENTRYDATE) MaxDate
	De YourTable
	GRUPO PELO USERNAME, MÊS (ENTRYDATE), ANO (ENTRYDATE) 
) T INTERNO JUNTA-SE a YourTable Yt EM T.USERNAME = Yt.USERNAME E T.MaxDate = Yt.ENTRYDATE
Outras soluções  
 
programming4us programming4us