Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите пожалуйста написать простенький запрос)  [new]
Logunas
Member

Откуда:
Сообщений: 1
Здравствуйте! У меня очень примитивное задание, но довольно специфическое. Нужно написать SQL запрос по следующей задаче "Имеется таблица с полями "отдел" и "сотрудник". Требуется вывести те отделы, в которых работает более пяти сотрудников."

P.S. Запрос нужно написать в MS Excel, это очень важно. Я подключила надстройку "xltools", и запросы вроде как писать с её помощью можно, но если кто знает, как этот SQL запрос в Excel можно создать, буду тысячекратно благодарна!
Но для начала, хотя бы в обычном MS SQL виде запрос бы придумать....
20 мар 18, 21:14    [21272775]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста написать простенький запрос)  [new]
xenix
Guest
Logunas,
SELECT V.DEPARTMENT
FROM TABLE_A V
GROUP BY V.DEPARMENT
HAVING COUNT(V.WORKER)>5
20 мар 18, 22:02    [21272849]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста написать простенький запрос)  [new]
Massa52
Member

Откуда:
Сообщений: 379
Logunas
P.S. Запрос нужно написать в MS Excel....

Если макросы устраивают то - можно использовать процеду вызова SP
+
Public Sub RunQuery(w As String)
  Dim con As ADODB.Connection
  Dim cmd As ADODB.Command
  Dim rs As ADODB.Recordset
  Dim WSP1 As Worksheet
  Set con = New ADODB.Connection
  Set cmd = New ADODB.Command
  Set rs = New ADODB.Recordset

  Application.DisplayStatusBar = True
  Application.StatusBar = "Contacting SQL Server..."

  Set WSP1 = Worksheets(w)
  WSP1.Activate

  ' Remove any values in the cells where we want to put our Stored Procedure's results.
  Dim rngRange As Range
  Set rngRange = Range(Cells(4, 1), Cells(Rows.Count, 1)).EntireRow
  rngRange.ClearContents

  ' Log into our SQL Server, and run the Stored Procedure
  con.Open "Provider=SQLOLEDB;Data Source=.;Initial Catalog=xxx;User ID=xx;Password=xxxxxxxx;"
  cmd.ActiveConnection = con

  ' Set up the parameter for our Stored Procedure
  ' (Parameter types can be adVarChar,adDate,adInteger)
  cmd.Parameters.Append cmd.CreateParameter("StartTime", adVarChar, adParamInput, 10, Range("I1").Text)
  cmd.Parameters.Append cmd.CreateParameter("EndTime", adVarChar, adParamInput, 10, Range("I2").Text)
  'cmd.Parameters.Append cmd.CreateParameter("Numbersotrudnikov", adInteger, adParamInput, 10, Range("L1").Text)

  Application.StatusBar = "Running stored procedure..."
  cmd.CommandText = "uspMyProcedure"
  Set rs = cmd.Execute(, , adCmdStoredProc)

 ' Copy the results to cell B7 on the first Worksheet
  'Set WSP1 = Worksheets(w)
  'WSP1.Activate
  If rs.EOF = False Then WSP1.Cells(4, 1).CopyFromRecordset rs
    
  rs.Close
  Set rs = Nothing
  Set cmd = Nothing

  con.Close
  Set con = Nothing
  
  Application.StatusBar = "Data successfully updated."
  
  Columns("A:A").Select
  Selection.NumberFormat = "d/m/yyyy h:mm"
  'Selection.NumberFormat = "yyyy-mm-dd hh:mm:ss"
  'Columns("A:A").Select
    Selection.Replace What:="-", Replacement:="/", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
  
  Range("B2").Select

End Sub
21 мар 18, 08:43    [21273181]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить