<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Александр Шкильнюк</title>
	<atom:link href="http://xandr.org.ua/feed/" rel="self" type="application/rss+xml" />
	<link>http://xandr.org.ua</link>
	<description>select &#039;:)&#039; from dual</description>
	<lastBuildDate>Mon, 30 Apr 2012 20:32:43 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Алан Глинн. Области тьмы</title>
		<link>http://xandr.org.ua/alan-glinn-oblasti-tmy/</link>
		<comments>http://xandr.org.ua/alan-glinn-oblasti-tmy/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 20:32:42 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Чтиво]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=874</guid>
		<description><![CDATA[Вы когда-нибудь задумывались над тем, что это не результат Ваших действий ? Вы задумывались над тем, что Вы бы могли большего ? Задавили себе вопрос: &#171;Это всё, на что я способен ?&#187;. Вас тысячи, миллионы, а с учетом китайцев &#8212; миллиарды. Советую к прочтению книгу Алана Глинна &#8212; Область Тьмы. Название странное для содержания книги [...]]]></description>
			<content:encoded><![CDATA[<p>Вы когда-нибудь задумывались над тем, что это не результат Ваших действий ?</p>
<p>Вы задумывались над тем, что Вы бы могли большего ?</p>
<p>Задавили себе вопрос: &#171;Это всё, на что я способен ?&#187;.</p>
<p>Вас тысячи, миллионы, а с учетом китайцев &#8212; миллиарды.</p>
<p>Советую к прочтению книгу Алана Глинна &#8212; Область Тьмы.</p>
<p>Название странное для содержания книги (я бы назвал иначе) , но суть и содержание заставляют задуматься над вещами, которые на сегодняшний день не подвластны нашему разуму без допинга, пинка под зад и всякого подобного, придающего прямолинейного движения.</p>
<p>Но когда допинг становится соблазном, Вас остановить ?</p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/alan-glinn-oblasti-tmy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS SQL. Сверяем процедуры на разных инстансах</title>
		<link>http://xandr.org.ua/ms-sql-sveryaem-procedury-na-raznyx-instansax/</link>
		<comments>http://xandr.org.ua/ms-sql-sveryaem-procedury-na-raznyx-instansax/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 14:54:19 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Базы данных]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=866</guid>
		<description><![CDATA[Иногда приходится сверять код одних и тех-же процедур на разных инстансах. Ну, например, база для разработки и база для тестирования. Ниже предлагаю вариант, как убедится в том, что процедуры одинаковы: Сверять будем hash ключи. DECLARE @spname nvarchar(4000) DECLARE @spdef nvarchar(4000) SET @spname ='some_sp' select @spdef =OBJECT_DEFINITION(OBJECT_ID(@spname)) select HASHBYTES('SHA1', @spdef) Проделываем то-же самое на другом инстансе [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда приходится сверять код одних и тех-же процедур на разных инстансах. Ну, например, база для разработки и база для тестирования.</p>
<p>Ниже предлагаю вариант, как убедится в том, что процедуры одинаковы:</p>
<p>Сверять будем hash ключи.</p>
<pre>DECLARE <span style="font-size: x-small;">@spname </span><span style="color: #0000ff; font-size: x-small;"><span style="color: #0000ff; font-size: x-small;">nvarchar</span></span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">(</span></span><span style="font-size: x-small;">4000</span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">)</span></span>
DECLARE <span style="font-size: x-small;">@spdef </span><span style="color: #0000ff; font-size: x-small;"><span style="color: #0000ff; font-size: x-small;">nvarchar</span></span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">(</span></span><span style="font-size: x-small;">4000</span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">)</span></span>

SET @<span style="font-size: x-small;">spname </span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">=</span></span><span style="color: #ff0000; font-size: x-small;"><span style="color: #ff0000; font-size: x-small;">'some_sp'</span></span>
select <span style="font-size: x-small;">@spdef </span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">=</span></span><span style="color: #ff00ff; font-size: x-small;"><span style="color: #ff00ff; font-size: x-small;">OBJECT_DEFINITION</span></span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">(</span></span><span style="color: #ff00ff; font-size: x-small;"><span style="color: #ff00ff; font-size: x-small;">OBJECT_ID</span></span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">(</span></span><span style="font-size: x-small;">@spname</span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">))</span></span>
select <span style="color: #ff00ff; font-size: x-small;"><span style="color: #ff00ff; font-size: x-small;">HASHBYTES</span></span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">(</span></span><span style="color: #ff0000; font-size: x-small;"><span style="color: #ff0000; font-size: x-small;">'SHA1'</span></span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">,</span></span><span style="font-size: x-small;"> @spdef</span><span style="color: #808080; font-size: x-small;"><span style="color: #808080; font-size: x-small;">)</span></span></pre>
<p>Проделываем то-же самое на другом инстансе и сверяем ключики. Для удобства можно создать процедуры для полученя ключа, и проверки его с каким-либо другим ключом (я же повесил их на HOT KEY в SSMS для удобства).</p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/ms-sql-sveryaem-procedury-na-raznyx-instansax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Новые функции Lead &amp; Lag в MS SQL 2012 (Denali)</title>
		<link>http://xandr.org.ua/novye-funkcii-lead-lag/</link>
		<comments>http://xandr.org.ua/novye-funkcii-lead-lag/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 13:30:17 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[denali]]></category>
		<category><![CDATA[Lag]]></category>
		<category><![CDATA[Lead]]></category>
		<category><![CDATA[MS SQL]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=857</guid>
		<description><![CDATA[С новой версией SQL Server 2012 мы встретим много новых возможностей. Про одну из них я расскажу Вам сегодня. Это функции Lead и Lag. Что это за функции ? Это функции доступа к данным, которые граничат с той или иной строкой не используя self-соединений. Синтаксис: LAG&#124;LEAD (scalar_expression [,offset] [,default]) OVER ( [ partition_by_clause ] order_by_clause [...]]]></description>
			<content:encoded><![CDATA[<p>С новой версией SQL Server 2012 мы встретим много новых возможностей. Про одну из них я расскажу Вам сегодня.</p>
<p>Это функции Lead и Lag.</p>
<p>Что это за функции ?</p>
<p>Это функции доступа к данным, которые граничат с той или иной строкой не используя self-соединений.</p>
<p><span id="more-857"></span></p>
<p>Синтаксис:</p>
<pre>LAG|LEAD (scalar_expression [,offset] [,default])
    OVER ( [ partition_by_clause ] order_by_clause )</pre>
<p>Опишу данные функции на примере (все те же трактористы).</p>
<p>Создаем таблицу и заполняем ее:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> #tab
<span style="color: #66cc66;">&#40;</span>
T_ID    <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">IDENTITY</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
T_Date    <span style="color: #993333; font-weight: bold;">DATE</span><span style="color: #66cc66;">,</span>
T_Name    <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
T_Value    <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> #tab <span style="color: #993333; font-weight: bold;">VALUES</span>
<span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'15'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'14'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'13'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'12'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'11'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'10'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'11'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'12'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'13'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'14'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Вася'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'15'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'25'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'24'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'23'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'22'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'21'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'20'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'21'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'22'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'23'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'24'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Петя'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'25'</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">-- select * from #tab</span>
&nbsp;
<span style="color: #808080; font-style: italic;">-- DROP TABLE #tab</span></pre></div></div>

<p>Сделав SELECT получим следующее:</p>
<p><a href="http://xandr.org.ua/wp-content/uploads/2012/04/Lead_Lag_1.jpg"><img class="aligncenter size-full wp-image-859" title="Lead_Lag_1" src="http://xandr.org.ua/wp-content/uploads/2012/04/Lead_Lag_1.jpg" alt="" width="277" height="469" /></a></p>
<p>Теперь ставим задачу получить соседние данные (я беру поле T_Value) для каждой строки.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span>
T_ID<span style="color: #66cc66;">,</span>
T_Date<span style="color: #66cc66;">,</span>
T_Name<span style="color: #66cc66;">,</span>
T_Value<span style="color: #66cc66;">,</span>
LAG<span style="color: #66cc66;">&#40;</span>T_Value<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">OVER</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> T_Date<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>T_Value_DayBefore<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span>
LEAD<span style="color: #66cc66;">&#40;</span>T_Value<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">OVER</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> T_Date<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>T_Value_DayAfter<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span>
<span style="color: #993333; font-weight: bold;">FROM</span> #tab</pre></div></div>

<p>Таким образом мы получим данные о трудоднях трактористов в сравнении с другими днями (иногда часто такие вещи нужны для репортов).</p>
<p>Если посмотреть синтаксис, то мы видим там понятие offset (количество строк до/после строки перед текущей строкой, из которой необходимо получить значение). По умолчанию (если не указывать) offset равен 1.  Т.е. мы можем сдвигаться по строкам назад и вперед.</p>
<p>Буду рад, если это кому-то пригодится <img src='http://xandr.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/novye-funkcii-lead-lag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Очередной абсурд. Китайцы</title>
		<link>http://xandr.org.ua/ocherednoj-absurd-kitajcy/</link>
		<comments>http://xandr.org.ua/ocherednoj-absurd-kitajcy/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 10:00:35 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Абсурды]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=854</guid>
		<description><![CDATA[Как Вам такая уборка улиц ?]]></description>
			<content:encoded><![CDATA[<p>Как Вам такая уборка улиц ?</p>
<p><img src="http://veseloeradio.ru/vardata/cache/resized/modules/lenta/images_180000_163929_2276591/W640_H480_Ocenter.jpg" alt="" /></p>
<p><img src="http://veseloeradio.ru/vardata/cache/resized/modules/lenta/images_180000_163929_2122401/W640_H480_Ocenter.jpg" alt="" /></p>
<p><img src="http://veseloeradio.ru/vardata/cache/resized/modules/lenta/images_180000_163929_330868/W640_H480_Ocenter.jpg" alt="" /></p>
<p><img src="http://veseloeradio.ru/vardata/cache/resized/modules/lenta/images_180000_163929_2601066/W640_H480_Ocenter.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/ocherednoj-absurd-kitajcy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Фото. Карпаты</title>
		<link>http://xandr.org.ua/foto-karpaty/</link>
		<comments>http://xandr.org.ua/foto-karpaty/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 13:16:43 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Фото]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=849</guid>
		<description><![CDATA[Мои любимые Карпаты]]></description>
			<content:encoded><![CDATA[<p>Мои любимые Карпаты<br />
<img src="https://lh5.googleusercontent.com/-rsKGmhQe7lw/T2cG3ZfUGPI/AAAAAAAADg4/wZ_26UItQ_w/s640/IMG_5479.JPG" alt="Carpathians 2011" width="561" height="374" /></p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/foto-karpaty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS SQL. Удаляем дупликаты с помощью оконных функций.</title>
		<link>http://xandr.org.ua/ms-sql-udalyaem-duplikaty-s-pomoshhyu-okonnyx-funkcij/</link>
		<comments>http://xandr.org.ua/ms-sql-udalyaem-duplikaty-s-pomoshhyu-okonnyx-funkcij/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 14:12:24 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=845</guid>
		<description><![CDATA[Допустим, что перед нами стоит задача удалить дубликаты из таблиц(ы). Это можно сделать следующим образом. Допустим у нас есть некая таблица (учитывая мою &#171;симпатию к трактористам&#187;): CREATE TABLE tbl_List_of_Tractorist &#40;T_ID INT IDENTITY, T_Name VARCHAR&#40;50&#41;&#41; Наполняем таблицу. В том числе генерим дупликаты. INSERT INTO tbl_List_of_Tractorist VALUES&#40;'Vasya'&#41;, &#40;'Petya'&#41;, &#40;'Ivan'&#41;, &#40;'Petya'&#41;, &#40;'Ivan'&#41;, &#40;'Vasya'&#41; , &#40;'Petya'&#41;, &#40;'Ivan'&#41; Как видим [...]]]></description>
			<content:encoded><![CDATA[<p>Допустим, что перед нами стоит задача удалить дубликаты из таблиц(ы).</p>
<p>Это можно сделать следующим образом.</p>
<p>Допустим у нас есть некая таблица (учитывая мою &#171;симпатию к трактористам&#187;):</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> tbl_List_of_Tractorist <span style="color: #66cc66;">&#40;</span>T_ID <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">IDENTITY</span><span style="color: #66cc66;">,</span> T_Name <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Наполняем таблицу. В том числе генерим дупликаты.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> tbl_List_of_Tractorist
<span style="color: #993333; font-weight: bold;">VALUES</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Vasya'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Petya'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Ivan'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Petya'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Ivan'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Vasya'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Petya'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Ivan'</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Как видим у нас 3 Ивана, 3 Петра и 2 Василия.</p>
<p>Из этого всего надо оставить каждого имени по-одному.<br />
Делаем следующее:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">;WITH CTE
	<span style="color: #993333; font-weight: bold;">AS</span>
	<span style="color: #66cc66;">&#40;</span>
	    <span style="color: #993333; font-weight: bold;">SELECT</span> T_ID<span style="color: #66cc66;">,</span> T_Name<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">ROW_NUMBER</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">OVER</span><span style="color: #66cc66;">&#40;</span>partition <span style="color: #993333; font-weight: bold;">BY</span> T_Name <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> T_ID<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> RowNum
	    <span style="color: #993333; font-weight: bold;">FROM</span> tbl_List_of_Tractorist
	<span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #993333; font-weight: bold;">FROM</span> CTE <span style="color: #993333; font-weight: bold;">WHERE</span> RowNum<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">1</span></pre></div></div>

<p>Но стоит быть весьма осторожным с таблицами на которых навешано n-ое количество индексов или есть тригеры или же количество записей очень большое.<br />
Иногда дешевле будет выполнить Bulk-Insert (SELECT &#8230;.. INTO &#8230;..) в другую таблицу, которая будет хранить уже отобранные данные, очистить первую и залить данные обратно.</p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/ms-sql-udalyaem-duplikaty-s-pomoshhyu-okonnyx-funkcij/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MS SQL. Экспериментируем с ISNULL</title>
		<link>http://xandr.org.ua/ms-sql-eksperimentiruem-s-isnull/</link>
		<comments>http://xandr.org.ua/ms-sql-eksperimentiruem-s-isnull/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 16:05:59 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[ISNULL]]></category>
		<category><![CDATA[MS SQL]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=841</guid>
		<description><![CDATA[Хочу поделится интересным моментом, с которым столкнулся вчера. Речь пойдет о функции ISNULL в MS SQL. Напомним ее описание: функция ISNULL заменяет значение NULL указанным замещающим значением. Синтаксис следующий: ISNULL ( check_expression , replacement_value ) Особенностью данной функции есть то, что она вернет значение replacement_value того же типа, что и check_expression. Т.е. если написать следующее: [...]]]></description>
			<content:encoded><![CDATA[<p>Хочу поделится интересным моментом, с которым столкнулся вчера.</p>
<p>Речь пойдет о функции ISNULL в MS SQL.</p>
<p>Напомним ее <a href="http://msdn.microsoft.com/ru-ru/library/ms184325.aspx">описание</a>:</p>
<p>функция ISNULL заменяет значение NULL указанным замещающим значением.</p>
<p>Синтаксис следующий:</p>
<pre>ISNULL ( check_expression , replacement_value )</pre>
<p>Особенностью данной функции есть то, что она вернет значение replacement_value того же типа, что и check_expression.</p>
<p><span id="more-841"></span></p>
<p>Т.е. если написать следующее:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> ISNULL<span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">.</span>column1<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'-'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> column1 
<span style="color: #993333; font-weight: bold;">INTO</span> AdventureWorksDW2008<span style="color: #66cc66;">..</span>test_x 
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> column1 <span style="color: #66cc66;">&#41;</span> a</pre></div></div>

<p>мы должны получить таблицу test_x в базе AdventureWorksDW2008 с одним полем типа varchar(8) и одной записью в виде значения &#8216;-&#8217;. Мы передали в ISNULL значение типа varchar и получили такой же тип на выходе(пусть это будет NULL значение, но мы явно указываем тип. Нам надо именно обработать NULL).</p>
<p>Тут все хорошо.</p>
<p>А теперь делаем следующее:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> ISNULL<span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">.</span>column1<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'--'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> column1
<span style="color: #993333; font-weight: bold;">INTO</span> AdventureWorksDW2008<span style="color: #66cc66;">..</span>test_x
<span style="color: #993333; font-weight: bold;">FROM</span>
<span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> column1
<span style="color: #66cc66;">&#41;</span> a</pre></div></div>

<p>Запустив данный скрипт мы получаем ошибочку типа:</p>
<p>Conversion failed when converting the varchar value &#8216;&#8212;&#8217; to data type int.</p>
<p>Все правильно, т.к. мы пытаемся заменить int-овый NULL string значением.</p>
<p>А если выполнить следующее:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> ISNULL<span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">.</span>column1<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'-'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> column1
<span style="color: #993333; font-weight: bold;">INTO</span> AdventureWorksDW2008<span style="color: #66cc66;">..</span>test_x
<span style="color: #993333; font-weight: bold;">FROM</span>
<span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">CAST</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> column1
<span style="color: #66cc66;">&#41;</span> a
&nbsp;
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> AdventureWorksDW2008<span style="color: #66cc66;">..</span>test_x</pre></div></div>

<p>Ошибку не получим, и как видим даже что-то вставилось в таблицу, а именно значение 0, т.е. поле имеет int тип.</p>
<p>В данном случае &#8216;-&#8217; воспринялось не как string, а что-то математическое и связанное с действиями над int значениями, т.е. как минус. Тоже произойдет если задать &#8216;+&#8217;. Но уже &#8216;*&#8217; или &#8216;\&#8217; не прокатит.</p>
<p>В моей же задаче стояла потребность в замене NULL значений символом &#8216;-&#8217;, т.е. то, что я описал в конце. Это было что-то отчета. Выкрутился же я использованием CAST внутри ISNULL и приводил поле явно к строковому типу, т.к. поле в таблице имело int значение.</p>
<p>В моих примерах используется выражение SELECT &#8230;.. INTO чтобы показать типы возвращаемых значений через создание таблиц с полями данных типов.</p>
<p>Век живи &#8212; век учись ))))</p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/ms-sql-eksperimentiruem-s-isnull/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSMS директория по умолчанию / SSMS default directory</title>
		<link>http://xandr.org.ua/ssms-direktoriya-po-umolchaniyu-ssms-default-directory/</link>
		<comments>http://xandr.org.ua/ssms-direktoriya-po-umolchaniyu-ssms-default-directory/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 08:18:15 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[SSMS]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=838</guid>
		<description><![CDATA[Добрый день. Вчера мне надо было поменять директорию моих проектов по умолчанию в SSMS (надоело каждый раз искать нужную мне папку). Собственно в самой студии я так и не смог найти этой настройки. Сам же конфиг лежит в реестре винды. В моем случае это Windows 7 и SSMS для 2008 сервера Вот путь в ветках [...]]]></description>
			<content:encoded><![CDATA[<p>Добрый день.</p>
<p>Вчера мне надо было поменять директорию моих проектов по умолчанию в SSMS (надоело каждый раз искать нужную мне папку). Собственно в самой <a href="/tag/ssms">студии</a> я так и не смог найти этой настройки.</p>
<p>Сам же конфиг лежит в реестре винды.</p>
<p>В моем случае это Windows 7 и SSMS для 2008 сервера</p>
<p>Вот путь в ветках реестра:</p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\100\Tools\Shell</p>
<p>Ищем значение для DefaultFileOpenLocation и меняем его на путь к Вашей папке проектов.</p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/ssms-direktoriya-po-umolchaniyu-ssms-default-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beethoven&#8217;s 5 Secrets &#8212; OneRepublic (Cello/Orchestral Cover) ThePianoGuys</title>
		<link>http://xandr.org.ua/beethovens-5-secrets-onerepublic-celloorchestral-cover-thepianoguys/</link>
		<comments>http://xandr.org.ua/beethovens-5-secrets-onerepublic-celloorchestral-cover-thepianoguys/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 15:32:03 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Видео]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=836</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/mJ_fkw5j-t0" frameborder="0" width="511" height="288"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/beethovens-5-secrets-onerepublic-celloorchestral-cover-thepianoguys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Оригинальный перевод Lingvo</title>
		<link>http://xandr.org.ua/originalnyj-perevod-lingvo/</link>
		<comments>http://xandr.org.ua/originalnyj-perevod-lingvo/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 12:07:46 +0000</pubDate>
		<dc:creator>xAndr</dc:creator>
				<category><![CDATA[Абсурды]]></category>
		<category><![CDATA[Lingvo]]></category>
		<category><![CDATA[match]]></category>
		<category><![CDATA[перевод]]></category>

		<guid isPermaLink="false">http://xandr.org.ua/?p=827</guid>
		<description><![CDATA[Недавно в одном &#171;сложнооборотистом&#187; предложении мне встретилось слово match. И я решил заглянуть в Lingvo и посмотреть возможные переводы этого слова. Следующего я не ожидал увидеть:]]></description>
			<content:encoded><![CDATA[<p>Недавно в одном &#171;сложнооборотистом&#187; предложении мне встретилось слово match. И я решил заглянуть в Lingvo и посмотреть возможные переводы этого слова.<br />
Следующего я не ожидал увидеть:<br />
<img src="http://xandr.org.ua/wp-content/uploads/2012/02/match.jpg" alt="match in Lingvo" /></p>
]]></content:encoded>
			<wfw:commentRss>http://xandr.org.ua/originalnyj-perevod-lingvo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

