AJUDA COM SELECT SUM
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)
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
Se você tirar o DetalhesObservacao do Group By, vai ter que tirar do SELECT também.
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?
Esse teu campo, ([Detalhes da observação]), qual é o tipo dele?
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...
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?
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
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...