Не уверен, что я сделал это правильно, но это то, что я пытался. Надеюсь, это поможет!
select card_number, transaction_date, sta
from
(
select t1.card_number, t1.transaction_date, t1.sta, datediff(DAY, t1.transaction_date, t2.transaction_date) as diff
from trans t1
join trans t2
on t1.card_number = t2.card_number
) result
where diff=7 and sta = 'Checked Out'
Я сделал быстрый алгоритм для вашего примера. Индекс начинается с нуля, поэтому вы должны пройти 0
, если вам нужен первый элемент. Вы можете изменить символ разделителя или предоставить его в качестве аргумента.
Краткое объяснение: мы перебираем все символы строки и пропускаем все элементы, пока не попадем в запрошенный. После этого мы находим следующий разделитель и возвращаем часть целой строки или возвращаем остаток строки, если не находим разделителей.
public static string GetItemByIndex(string line, int index)
{
for (var i = 0; i < line.Length; i++)
{
if (index == 0)
{
for (int j = i; j < line.Length; j++)
{
if (line[j] == ',')
{
return line.Substring(i, j - i);
}
}
return line.Substring(i, line.Length - i);
}
if (line[i] == ',' && index != 0)
{
index--;
}
}
return null;
}
Это может быть возможным решением:
public static string GetValue(string myString,int position)
{
return myString.Split(',')[position - 1];
}
static void Main(string[] args)
{
string myItem = "22";
Console.WriteLine(GetValue("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27", 22));
Console.ReadLine();
}