muy buenos días, tengo una consulta en SQL que es básicamente esta (La pongo con el código para que me digan si está bien):
Dim txtConsultaPrimera As New StringBuilder
txtConsultaPrimera.Append("(Select Count(Tipo_Asistencia) As Normal ")
txtConsultaPrimera.Append("From Asistencia")
txtConsultaPrimera.Append(" Where ")
txtConsultaPrimera.Append("Id_Empresa = ").Append(My.Settings.Empresa.ToString).Append(" And ")
txtConsultaPrimera.Append("Contato = ").Append(TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaPrimera.Append("Planilla = 1").Append(" And ")
txtConsultaPrimera.Append("Tipo_Asistencia = 'NORMAL'").Append(" And ")
txtConsultaPrimera.Append("Fecha BETWEEN '").Append(DeFecha(Fecha0101)).Append("' And '").Append(DeFecha(Fecha0102)).Append("') ")
txtConsultaPrimera.Append("As Primera")
Dim txtConsultaPrimeraMonto As New StringBuilder
txtConsultaPrimeraMonto.Append("(Select Sum(Monto_Ord) As Monto ")
txtConsultaPrimeraMonto.Append("From Asistencia")
txtConsultaPrimeraMonto.Append(" Where ")
txtConsultaPrimeraMonto.Append("Id_Empresa = ").Append(My.Settings.Empresa.ToString).Append(" And ")
txtConsultaPrimeraMonto.Append("Contato = ").Append(TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaPrimeraMonto.Append("Planilla = 1").Append(" And ")
txtConsultaPrimeraMonto.Append("Tipo_Asistencia = 'NORMAL'").Append(" And ")
txtConsultaPrimeraMonto.Append("Fecha BETWEEN '").Append(DeFecha(Fecha0101)).Append("' And '").Append(DeFecha(Fecha0102)).Append("') ")
txtConsultaPrimeraMonto.Append("As Monto_Ord_1")
Dim txtConsultaSegunda As New StringBuilder
txtConsultaSegunda.Append("(Select Count(Tipo_Asistencia) As Normal ")
txtConsultaSegunda.Append("From Asistencia")
txtConsultaSegunda.Append(" Where ")
txtConsultaSegunda.Append("Id_Empresa = ").Append(My.Settings.Empresa.ToString).Append(" And ")
txtConsultaSegunda.Append("Contato = ").Append(TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaSegunda.Append("Planilla = 1").Append(" And ")
txtConsultaSegunda.Append("Tipo_Asistencia = 'NORMAL'").Append(" And ")
txtConsultaSegunda.Append("Fecha BETWEEN '").Append(DeFecha(Fecha0201)).Append("' And '").Append(DeFecha(Fecha0202)).Append("') ")
txtConsultaSegunda.Append("As Segunda")
Dim txtConsultaSegundaMonto As New StringBuilder
txtConsultaSegundaMonto.Append("(Select Sum(Monto_Ord) As Monto ")
txtConsultaSegundaMonto.Append("From Asistencia")
txtConsultaSegundaMonto.Append(" Where ")
txtConsultaSegundaMonto.Append("Id_Empresa = ").Append(My.Settings.Empresa.ToString).Append(" And ")
txtConsultaSegundaMonto.Append("Contato = ").Append(TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaSegundaMonto.Append("Planilla = 1").Append(" And ")
txtConsultaSegundaMonto.Append("Tipo_Asistencia = 'NORMAL'").Append(" And ")
txtConsultaSegundaMonto.Append("Fecha BETWEEN '").Append(DeFecha(Fecha0201)).Append("' And '").Append(DeFecha(Fecha0202)).Append("') ")
txtConsultaSegundaMonto.Append("As Monto_Ord_2")
Dim txtConsultaSeptimo As New StringBuilder
txtConsultaSeptimo.Append("(Select Count(Tipo_Asistencia) As Normal ")
txtConsultaSeptimo.Append("From Asistencia")
txtConsultaSeptimo.Append(" Where ")
txtConsultaSeptimo.Append("Id_Empresa = ").Append(My.Settings.Empresa.ToString).Append(" And ")
txtConsultaSeptimo.Append("Contato = ").Append(TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaSeptimo.Append("Planilla = 1").Append(" And ")
txtConsultaSeptimo.Append("Tipo_Asistencia = 'SEPTIMO')").Append(" As Septimos")
Dim txtConsultaSeptimoMonto As New StringBuilder
txtConsultaSeptimoMonto.Append("(Select Sum(Monto_Ord) As Normal ")
txtConsultaSeptimoMonto.Append("From Asistencia")
txtConsultaSeptimoMonto.Append(" Where ")
txtConsultaSeptimoMonto.Append("Id_Empresa = ").Append(My.Settings.Empresa.ToString).Append(" And ")
txtConsultaSeptimoMonto.Append("Contato = ").Append(TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaSeptimoMonto.Append("Planilla = 1").Append(" And ")
txtConsultaSeptimoMonto.Append("Tipo_Asistencia = 'SEPTIMO')").Append(" As Monto_Sep")
Dim txtConsultaAsuetos As New StringBuilder
txtConsultaAsuetos.Append("(Select Count(Tipo_Asistencia) As Normal ")
txtConsultaAsuetos.Append("From Asistencia")
txtConsultaAsuetos.Append(" Where ")
txtConsultaAsuetos.Append("Id_Empresa = ").Append(My.Settings.Empresa.ToString).Append(" And ")
txtConsultaAsuetos.Append("Contato = ").Append(TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaAsuetos.Append("Planilla = 1").Append(" And ")
txtConsultaAsuetos.Append("Tipo_Asistencia = 'ASUETO')").Append(" As Asuetos")
Dim txtConsultaAsuetosMonto As New StringBuilder
txtConsultaAsuetosMonto.Append("(Select Sum(Tipo_Asistencia) As Normal ")
txtConsultaAsuetosMonto.Append("From Asistencia")
txtConsultaAsuetosMonto.Append(" Where ")
txtConsultaAsuetosMonto.Append("Id_Empresa = ").Append(My.Settings.Empresa.ToString).Append(" And ")
txtConsultaAsuetosMonto.Append("Contato = ").Append(TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaAsuetosMonto.Append("Planilla = 1").Append(" And ")
txtConsultaAsuetosMonto.Append("Tipo_Asistencia = 'ASUETO')").Append(" As Monto_Asu")
Dim txtConsultaAsistencia As New StringBuilder
txtConsultaAsistencia.Append("Select Id_Empresa")
txtConsultaAsistencia.Append(", ").Append("Contato As Contrato")
txtConsultaAsistencia.Append(", ").Append("Cui")
txtConsultaAsistencia.Append(", ").Append("Empleado")
txtConsultaAsistencia.Append(", ").Append(txtConsultaPrimera.ToString)
txtConsultaAsistencia.Append(", ").Append(txtConsultaPrimeraMonto.ToString)
txtConsultaAsistencia.Append(", ").Append(txtConsultaSegunda.ToString)
txtConsultaAsistencia.Append(", ").Append(txtConsultaSegundaMonto.ToString)
txtConsultaAsistencia.Append(", ").Append(txtConsultaSeptimo.ToString)
txtConsultaAsistencia.Append(", ").Append(txtConsultaSeptimoMonto.ToString)
txtConsultaAsistencia.Append(", ").Append(txtConsultaAsuetos.ToString)
txtConsultaAsistencia.Append(", ").Append(txtConsultaAsuetosMonto.ToString)
txtConsultaAsistencia.Append(", ").Append("SUM(Horas_Ord) AS Horas_Ord")
txtConsultaAsistencia.Append(", ").Append("SUM(Horas_Ext) AS Horas_Ext")
txtConsultaAsistencia.Append(", ").Append("SUM(Horas_Total) AS Horas_Total")
txtConsultaAsistencia.Append(", ").Append("SUM(Monto_Ord) AS Monto_Ord")
txtConsultaAsistencia.Append(", ").Append("SUM(Monto_Ext) AS Monto_Ext")
txtConsultaAsistencia.Append(", ").Append("SUM(Monto_Decreto) AS Monto_Decreto")
txtConsultaAsistencia.Append(", ").Append("SUM(Monto_Incentivo) AS Monto_Incentivo")
txtConsultaAsistencia.Append(", ").Append("SUM(Monto_Total) AS Monto_Total")
txtConsultaAsistencia.Append(" ")
txtConsultaAsistencia.Append("FROM Asistencia Where ")
txtConsultaAsistencia.Append("Id_Empresa = " & My.Settings.Empresa.ToString).Append(" And ")
txtConsultaAsistencia.Append("Contato = " & TablaContratos.Rows(n).Item("Codigo").ToString).Append(" And ")
txtConsultaAsistencia.Append("Planilla = 1").Append(" And ")
If Quin = 1 Then
txtConsultaAsistencia.Append("Fecha Between '").Append(DeFecha(Fecha0101)).Append("' And '").Append(DeFecha(Fecha0102)).Append("' ")
ElseIf Quin = 2 Then
txtConsultaAsistencia.Append("Fecha Between '").Append(DeFecha(Fecha0101)).Append("' And '").Append(DeFecha(Fecha0202)).Append("' ")
End If
txtConsultaAsistencia.Append("Group By").Append(" Id_Empresa, Contrato, Cui, Empleado")
y esta seria en SQL:
Select
Id_Empresa,
Contato As Contrato,
Cui,
Empleado,
(Select Count(Tipo_Asistencia) As Normal From Asistencia Where Id_Empresa = 1 And Contato = 268 And Planilla = 1 And Tipo_Asistencia = 'NORMAL' And Fecha BETWEEN '2014/8/28' And '2014/9/12') As Primera,
(Select Sum(Monto_Ord) As Monto From Asistencia Where Id_Empresa = 1 And Contato = 268 And Planilla = 1 And Tipo_Asistencia = 'NORMAL' And Fecha BETWEEN '2014/8/28' And '2014/9/12') As Monto_Ord_1,
(Select Count(Tipo_Asistencia) As Normal From Asistencia Where Id_Empresa = 1 And Contato = 268 And Planilla = 1 And Tipo_Asistencia = 'NORMAL' And Fecha BETWEEN '2014/9/13' And '2014/9/27') As Segunda,
(Select Sum(Monto_Ord) As Monto From Asistencia Where Id_Empresa = 1 And Contato = 268 And Planilla = 1 And Tipo_Asistencia = 'NORMAL' And Fecha BETWEEN '2014/9/13' And '2014/9/27') As Monto_Ord_2,
(Select Count(Tipo_Asistencia) As Normal From Asistencia Where Id_Empresa = 1 And Contato = 268 And Planilla = 1 And Tipo_Asistencia = 'SEPTIMO') As Septimos,
(Select Sum(Monto_Ord) As Normal From Asistencia Where Id_Empresa = 1 And Contato = 268 And Planilla = 1 And Tipo_Asistencia = 'SEPTIMO') As Monto_Sep,
(Select Count(Tipo_Asistencia) As Normal From Asistencia Where Id_Empresa = 1 And Contato = 268 And Planilla = 1 And Tipo_Asistencia = 'ASUETO') As Asuetos,
(Select Sum(Tipo_Asistencia) As Normal From Asistencia Where Id_Empresa = 1 And Contato = 268 And Planilla = 1 And Tipo_Asistencia = 'ASUETO') As Monto_Asu,
SUM(Horas_Ord) AS Horas_Ord,
SUM(Horas_Ext) AS Horas_Ext,
SUM(Horas_Total) AS Horas_Total,
SUM(Monto_Ord) AS Monto_Ord,
SUM(Monto_Ext) AS Monto_Ext,
SUM(Monto_Decreto) AS Monto_Decreto,
SUM(Monto_Incentivo) AS Monto_Incentivo,
SUM(Monto_Total) AS Monto_Total
FROM Asistencia Where
Id_Empresa = 1 And
Contato = 268 And
Planilla = 1 And
Fecha Between '2014/8/28' And '2014/9/12'
Group By Id_Empresa, Contrato, Cui, Empleado
La Tabla es esta:

Todo trabaja bien, pero no se si es la forma más rapida y buena, no se si me entiendan, aunque el verdadero problema es que en la consulta de asuetos no me devuelve absolutamente nada, por que no hay nada, y yo quisiera que me devolviera al menos un 0, para no tenes que hacer algo con las variables, si no automaticamente que la consulta me devuelva 0. Gracias no se si me explique.
DiasLabAs = Integer.Parse(TablaAsistenciaTemporal.Rows(0).Item("Asuetos").ToString)
Monto_Sep = Val(TablaAsistenciaTemporal.Rows(0).Item("Monto_Sep").ToString)