AJUDA COM SELECT SUM

KURTGU 26/10/2016 11:47:16
#468432
[txt-color=#e80000][ô]NOVA[/txt-color]
Dim MyDataAdapter As New OleDbDataAdapter([Ô]SELECT Unidade, DATA, especialidade, Sum([Profissionais Previstos]) , Sum([Profissionais Presentes]), ([Detalhes da observação]) FROM [[Ô] & ([Ô]Worksheet[Ô]) & [Ô]$] GROUP BY especialidade, Unidade, DATA, [txt-color=#0000f0]([Detalhes da observação])[/txt-color][Ô], conn)

[txt-color=#0000f0]Neste novo select se eu tento tirar do group by detalhes da observacao da o seguinte errro.... Você tentou executar uma consulta que não inclui a expressão especificada [ô]Detalhes da observação[ô] como parte de uma função de agregação.[/txt-color]



[txt-color=#e80000]COM ESTe DA CERTO O SUM...[/txt-color]
[txt-color=#e80000][ô]ANTIGA[/txt-color]
Dim MyDataAdapter As New OleDbDataAdapter([Ô]SELECT Unidade, DATA, especialidade, Sum([Profissionais Previstos]), Sum([Profissionais Presentes]), Período FROM [[Ô] & ([Ô]Worksheet[Ô]) & [Ô]$] GROUP BY Período,especialidade, Unidade, DATA[Ô], conn)
KURTGU 26/10/2016 12:03:47
#468433
Minha Buscar Completa e esta...

ListView1.Items.Clear()
Dim pathconn As New OleDbConnectionStringBuilder([Ô]Provider = Microsoft.ACE.OLEDB.12.0; Data source=[Ô] & TextBox1.Text & [Ô];Extended Properties=[Ô][Ô]Excel 12.0;HDR= yes;[Ô][Ô];[Ô])
Dim conn As New OleDbConnection(pathconn.ToString)
Dim MyDataAdapter As New OleDbDataAdapter([Ô]SELECT Unidade, DATA, especialidade, Sum([Profissionais Previstos]), Sum([Profissionais Presentes]),([Detalhes da observação]), Período FROM [[Ô] & ([Ô]Worksheet[Ô]) & [Ô]$] GROUP BY Período,especialidade, Unidade, DATA, ([Detalhes da observação])[Ô], conn)
Dim dt As New DataTable()
MyDataAdapter.Fill(dt)

For Each row As DataRow In dt.Rows
Dim lst As ListViewItem

ListView1.Columns(0).Width = 120

If row(0).ToString = [Ô]AMA PARELHEIROS[Ô] Then
If row(3).ToString > row(4).ToString Then


Dim oldDate As Date
Dim oldWeekDay As Integer
oldDate = row(1).ToString
oldWeekDay = Weekday(oldDate)


lst = ListView1.Items.Add(row(0).ToString, [Ô][Ô])
lst.SubItems.Add(row(1).ToString)
If oldWeekDay = 1 Then
lst.SubItems.Add([Ô]Domingo[Ô])
ElseIf oldWeekDay = 2 Then
lst.SubItems.Add([Ô]Segunda-Feira[Ô])
ElseIf oldWeekDay = 3 Then
lst.SubItems.Add([Ô]Terca-Feira[Ô])
ElseIf oldWeekDay = 4 Then
lst.SubItems.Add([Ô]Quarta-Feira[Ô])
ElseIf oldWeekDay = 5 Then
lst.SubItems.Add([Ô]Quinta-Feira[Ô])
ElseIf oldWeekDay = 6 Then
lst.SubItems.Add([Ô]Sexta-Feira[Ô])
ElseIf oldWeekDay = 7 Then
lst.SubItems.Add([Ô]Sabado[Ô])
End If
lst.SubItems.Add(row(2).ToString)
lst.SubItems.Add(row(3).ToString)
lst.SubItems.Add(row(4).ToString)
lst.SubItems.Add(row(5).ToString)
lst.SubItems.Add(row(6).ToString)
End If
Else

End If

Next
DS2T 26/10/2016 12:25:24
#468434
Todos os seus campos do SELECT devem estar no GROUP BY, a não ser que estejam dentro de uma função agregada.
Se você tirar o DetalhesObservacao do Group By, vai ter que tirar do SELECT também.
KURTGU 26/10/2016 12:41:47
#468439
Citação:

:
Todos os seus campos do SELECT devem estar no GROUP BY, a não ser que estejam dentro de uma função agregada.
Se você tirar o DetalhesObservacao do Group By, vai ter que tirar do SELECT também.



Até ai tudo bem mais sabe me dizer DS2T por que ele funciona o sum de uma forma e da outra nao?
KURTGU 26/10/2016 16:50:45
#468454
up.....
GUIMORAES 26/10/2016 17:11:16
#468455
KURTGU,

Esse teu campo, ([Detalhes da observação]), qual é o tipo dele?
KURTGU 26/10/2016 17:27:42
#468456
Citação:

:
KURTGU,

Esse teu campo, ([Detalhes da observação]), qual é o tipo dele?



Isso vem direto de uma planilha Excel, dentro dele tem um texto...
DS2T 26/10/2016 20:06:45
#468463
Citação:

Dim MyDataAdapter As New OleDbDataAdapter([Ô]SELECT Unidade, DATA, especialidade, Sum([Profissionais Previstos]), Sum([Profissionais Presentes]), Período FROM [[Ô] & ([Ô]Worksheet[Ô]) & [Ô]$] GROUP BY Período,especialidade, Unidade, DATA[Ô], conn)


Esse dá certo porque todos os campos que estão no SELECT, estão no group by ou dentro da função de agregação. Confira comigo no replay:

Unidade, tá no group by (que será chamado de gb, para eu digitar menos haha)
Data, tá no gb
Especialidade, tá no gb
Periodo, tá no gb
Profissionais Previstos, tá dentro do Sum
Profissionais Presentes, tá dentro do Sum

Na sua nova função isso não acontece.

Citação:

Dim MyDataAdapter As New OleDbDataAdapter([Ô]SELECT Unidade, DATA, especialidade, Sum([Profissionais Previstos]) , Sum([Profissionais Presentes]), ([Detalhes da observação]) FROM [[Ô] & ([Ô]Worksheet[Ô]) & [Ô]$] GROUP BY especialidade, Unidade, DATA, ([Detalhes da observação])[Ô], conn)



Detalhes da observação não está nem no group by, nem dentro de uma função de agregação (Sum, por exemplo)

Isso vai gerar erro, porque o SQL Server simplesmente não sabe o que fazer com esse campo. Vai repetir o máximo? Vai repetir o mínimo? Vai somar, tirar a média?
XLEGENDARY 26/10/2016 23:00:51
#468468
KURTGU,

Alguns bancos de dados conseguem [Ô]adivinhar[Ô] quais são os campos que vc irá usar quando ocorre um group by

MySql por exemplo se você fizer um SQL e colocar group by em somente um campo irá funcionar mesmo se tiver função sum

ja em firebird por exemplo isso não ocorre, você é obrigado a colocar todos os campos do sql no group by

como o DS2T ja mencionou, olhe suas funções de agregação e seus campos do sql
KURTGU 27/10/2016 07:26:55
#468473
Citação:

:
KURTGU,

Alguns bancos de dados conseguem [Ô]adivinhar[Ô] quais são os campos que vc irá usar quando ocorre um group by

MySql por exemplo se você fizer um SQL e colocar group by em somente um campo irá funcionar mesmo se tiver função sum

ja em firebird por exemplo isso não ocorre, você é obrigado a colocar todos os campos do sql no group by

como o DS2T ja mencionou, olhe suas funções de agregação e seus campos do sql



O select esta sendo feito dentro de uma planilha excel. Ai que estou quebrando a cabeca...
Tópico encerrado , respostas não são mais permitidas