Вы можете попробовать следующий запрос, используя Pivot для достижения желаемого результата.
Create Table Article (ArticleId Int, [Description] Varchar(10))
Insert Into Article Values (1, 'Test')
Create Table OrderForecast(ArticleId Int, [Week] Int, [Order] Int, Amount Int)
Insert Into OrderForecast Values (1, 51, 1, 0),(1, 52, 2, 150), (1, 1, 3, 0),(1, 2, 4, 200), (1, 3, 5,0)
Select ArticleId, [Description], Week51, Week52, Week1, Week2, Week3
from
(
select ArticleId, [Description], Amount, [Week]
from
(
SELECT OrderForecast.ArticleId, 'Week' + Convert(Varchar(10), OrderForecast.[Week]) as [Week], [Order], Amount,
Article.[Description] as [Description] FROM OrderForecast
Inner Join Article On OrderForecast.ArticleId = Article.ArticleId
)a
) d
pivot
(
max(Amount)
for [Week] in (Week51, Week52, Week1, Week2, Week3)
) piv;
Результат будет таким, как показано ниже
ArticleId Description Week51 Week52 Week1 Week2 Week3
-------------------------------------------------------------
1 Test 0 150 0 200 0
Здесь я использовал запрос в качестве таблицы, потому что неделя была в числах, таких как 1, 2, но вы хотите, чтобы результат был на неделе1, неделе2 и т.д. Итак, я связал слово Week в числе и использовал его в запросе Pivot.
Вы можете найти живое демо Live Demo Здесь
Если HTML, который Вы используете XHTML совместимый, Вы могли бы загрузить его как XML-документ и затем использовать XPath/XSL - долго обветренный, но довольно изящный?
Подход, который я использовал в прошлом, должен использовать HTMLTidy, чтобы преобразовать грязный HTML в XHTML, и затем использовать XSL/XPath для контента анализа экранных данных в базу данных, создать обратную систему управления контентом.
Регулярные выражения сделали бы это, но могли быть сложными, после того как Вы пытаетесь снять теги, названия картинки и т.д., удалить ложные положительные стороны.
В простых случаях регулярные выражения сделают.
представьте вход в виде строки = "ttttttgottttttt";
представьте вывод в виде строки = Regex. Замена (вход, "пойдите", "<сильные> 0$ </сильный>");
уступит: "tttttt <сильное> движение </сильный> ttttttt"
Но когда Вы говорите, что HTML, если Вы обращаетесь к представленному окончательному тексту, это - определенная путаница. Скажите, что у Вас есть этот HTML:
<охватывают класс = "firstLetter"> B </промежуток> ook
Для выделения слова 'Book' Вы нуждались бы в помощи надлежащего рендерера HTML. Для упрощения можно сначала удалить все теги и оставить только содержание и затем сделать обычную замену, но она не чувствует себя хорошо.
Ища строки, Вы захотите искать регулярные выражения. Что касается маркировки его, после того как у Вас есть положение подстроки, которую должно быть достаточно просто использовать это для добавления в чем-то для переноса фразы.
Вы могли посмотреть на использование HTML DOM, проект с открытым исходным кодом на SourceForge.net. Таким образом, Вы могли программно управлять своим текстом вместо регулярных выражений надежды.
I like using Html Agility Pack very easy to use, although there hasn't been much updates lately, it is still usable. For example grabbing all the links
HtmlWeb client = new HtmlWeb();
HtmlDocument doc = client.Load("http://yoururl.com");
HtmlNodeCollection Nodes = doc.DocumentNode.SelectNodes("//a[@href]");
foreach (var link in Nodes)
{
Console.WriteLine(link.Attributes["href"].Value);
}