Попробуйте использовать first_value()
, чтобы получить первое значение beg_inventory
в окне, а затем добавьте в него окно sum()
покупок и продаж.
SELECT dim1,
dim2,
date,
beg_inventory,
purchase,
sales,
first_value(beg_inventory) OVER (PARTITION BY dim1,
dim2
ORDER BY date)
+
sum(purchase - sales) OVER (PARTITION BY dim1,
dim2
ORDER BY date) ending_inv
FROM elbat
ORDER BY dim1,
dim2,
date;
Из http://bytes.com/forum/thread689145.html:
Все процессы, выполненные в контексте учетной записи зарегистрированного пользователя. Если Вы хотите открыть файл на другом компьютере, Ваше приложение должно работать в контексте пользователя, который имеет полномочия открыть файлы на той машине. Можно сделать это с Олицетворением.
Самый легкий путь, кажется, чтобы дать текущему пользователю соответствующие права на других машинах.
Для аутентификации с долей, к которой у пользователя, выполняющего процесс, нет разрешения (который часто имеет место для административных долей) попытайтесь выполнить сетевую команду использования:
net use SERVERNAME\IPC$ /user:USERNAME PASSWORD
Попытайтесь выполнить это в отдельном процессе перед кодом, который на самом деле пытается получить доступ к доле, например:
ProcessStartInfo psi = new ProcessStartInfo(
"net", "use " + SERVERNAME + @"\IPC$ /user:" + USERNAME + " " + PASSWORD);
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.WaitForExit();
p.Close();
// The code to access the share follows...
Это полезно, если не уместно дать разрешение доле для учетной записи пользователя, выполняющей процесс, например, для модели обеспечения безопасности, где приложение конечного пользователя должно получить доступ к данным по доле, к которой у самого пользователя не должно быть прямого доступа.
Вы ищете способ установить текущего пользователя во времени выполнения?
В противном случае, пока у пользователя, выполняющего процесс, есть доступ к тем машинам, это будет работать на Вас:
DirectoryInfo di = new DirectoryInfo(@"\\machineName\c$\temp");
FileInfo[] files = di.GetFiles();
foreach (FileInfo f in files)
{
Debug.WriteLine(f.Name);
}