Month GroupCzasami dla statystyk trzeba pogrupować dane według miesięcy bądź kwartałów. Sprawę utrudnia fakt ,że kolumny przetrzymujące date (DATETIME) zawierają nie tylko miesiące ,ale także rok, dzień oraz godzinie.

Grupowanie po miesiącu  wymaga więc trochę większego wysiłku.

Naturalnie istnieje wiele  sposobów na rozwiązanie tego problemu.

Oto tymczasowa tabelka zawierająca wartość jak i datę po której będziemy grupować.

FilterKiedy pracujesz z bazą danych która ma wiele obiektów ciężko jest odnaleźć ten konkretny. Object Explorer w SQL Management Studio  listuje wszystkie obiekty według kategorii dlatego ciężko jest odnaleźć ten konkretny.

By rozwiązać ten problem możemy skorzystać z opcji filtrowania obiektów.

;WITH CTECommon Table Expression zostało przedstawione w SQL Server 2005. Wyrażenie ze słowem kluczowym WITH tworzy tymczasowy rezultat wynikowy, który przedstawia dane z pojedynczego polecenia “SELECT,INSERT,UPDATE,DELETE” albo z widoku “View”.

SQL

TRY TRY/CATCH to konstrukcja, która występuje w wielu językach programowania. TRY/CATCH pomaga odseparować daną logikę zapytania która w szczególnych przypadkach może zwrócić błąd.

W bloku TRY wykonujemy niebezpieczne zapytanie .W przypadku wystąpienia błędu łapiemy ten błąd go i obsługujemy w bloku CATCH.

Szybki TopTen trik ma już swoje lata ,ale nie jest powszechnie znany. Jedną z najczystszych operacji które wykonuje “SQL Server Management Studio” to operacja SELECT TOP na tabelce na której operuję. Zawsze trzeba sprawdzić jakie rekordy znajdują się w danej tabelce i jaki mają układ. Czy procedura dodała rekord tak jak trzeba i tak dalej.

Skróty Skróty klawiszowe pełnią ważną rolę w zwiększeniu produktywności. Nawet jako programista .NET w większość czasu spędzam w “SQL Server Managment Studio”. Dlatego postanowiłem spędzi trochę czasu na nauce skrótów klawiszowych. Swój blog traktuje jak notatnik więc mam nadzieje ,że kiedyś w przyszłość ten wpis i mi się przyda.

Wpisy o skrótach klawiszowych programu Eclipse i Visual Studio możesz też tutaj znaleźć.

Group byArrrghhh!!!

Znowu się spotykamy mój odwieczny przeciwniku (nie włączając w to żółtego ekranu śmierci ASP.NET).

Człowiek programuje od wiele lat ,ale z jakiegoś powodu moje neurony wciąż myślą ,że polecenie GROUP BY działa tak jakby tego chciał. W rzeczywistość tak nie jest i widzę po raz kolejny ten sam błąd. Nic więc dziwnego ,że w całym SQL polecenie GROUP BY należy do jednych z najbardziej znienawidzonych przeze mnie funkcji.

Dzisiaj jednak nastał dzień sądu przyjacielu ponieważ raz na zawsze utrwalę sobie jak działa funkcja GROUP BY.

JOIN Operacja JOIN jest najprawdopodobniej najczęściej używaną operacją w jakiejkolwiek bazie danych. Nie jest to niczym zaskakującym ponieważ system został  stworzony w taki sposób ,aby wyrażać związki pomiędzy rekordami bez  dublowania informacji.

MERGE Słowo kluczowe Merge zostało przedstawione w Sql Server 2008. Jego celem jest ułatwienie pisania skomplikowanych poleceń, które muszą wykonać różne funkcję na danej tabelce jak DELETE,INSERT i UPDATE za jednym zamachem.

Wcześniej ,aby wykonać te wszystkie funkcję trzeba było pisać wyrażenia INSERT, UPDATE i DELETE oddzielnie.

SQL CLR To jest pierwszy artykuł na temat pisania procedur,funkcji i innych rzeczy w Common Language Runtime (CLR). Ten artykuł koncentruje się na podstawach budowania procedury SQL w Visual Studio 2010 za pomocą C#.

Tak można pisać procedury i funkcję w kodzie w C#, które zostaną później wykorzystane przez SQL Server jako biblioteka *.dll.

COALESCECOALESCE akceptuje serie wartości z listy wyników, które mogą być puste (NULL) potem ona zwraca pierwszą nie pustą wartość z tej listy.

Taka funkcjonalność daje wiele kreatywnych użyć w  bazie Sql Server.

Oto proste przykłady.

SQL

OrderBy Pisząc aplikację w .NET zwykle używamy LINQ do sortowania danych ,ale jeśli dane pochodzą od systemu bazo danowego to dlaczego nie posortować informacji już na tym poziomie.

SQL oferuje nam klauzurę ORDER BY dzięki niej możemy ustalić po jakiej kolumnie informację będą posortowane.

XML Nodes W poprzednim wpisie pokazałem jak odczytać plik XML przy użyciu OPENXML. Według dokumentacji jest to najbardziej wydajny sposób na odczytywanie dużych naprawdę dużych plików XML. Jednak alternatywa istnieje i ma ona nazwę XMLNodes.

Podane poniższe operacje można wykonać tylko na parametrze typu XML w poprzednim przykładzie użyłem parametru VARCHAR.

Oto prosty przykład odczytu XML jak i zapisu jego zawartości do tabeli. Kiedyś pewien kolega zasugerował mi to jako jeden ze sposób do umieszczania listy danych na raz w procedurze n.p do insertów. Dzisiaj szczerze zastanawiałbym się nad inny rozwiązaniem ,ale ten sposób nie jest też do końca taki zły.

Kasowanie W tym wpisie przeanalizuję problem kasowania powtarzających się rekordów.

Istnieje wiele rozwiązań tego problemu. Ja postanowiłem przedstawić trzy różne rozwiązania i porównać je w różnych scenariuszach. Sprawdziłem te trzy metody w dwóch różnych wypadkach.

W pierwszym przypadku mamy tabele niezindeksowaną, która posiada dwie kolumny. Pierwsza kolumna to identyfikator, druga natomiast zawiera losową wartość liczbową. Tabela ta zawiera 100.000 rekordów, które się powtarzają. Ze względu na losowość nie wiem dokładnie, ile jest powtarzających się rekordów?. Naszym zadaniem jest je usunąć.

W drugim wypadku mamy tabelę tymczasową z 4 kolumnami. Identyfikator, Imię, Nazwisko oraz Numer. Rekordów tabeli jest tylko 11. Nie są one generowane losowo więc wynik operacji zawsze będzie taki sam, bez względu na to z jakiej metody skorzystamy. Wiemy też jawnie, ile rekordów się powtarza, w tym przypadku chcemy skasować rekordy, które mają takie same Imie i Nazwisko oraz Numer.

Oba wypadki zawierają kolumny NOT NULL oraz posiadają identyfikator auto-inkrementalny.

to OpenSzczerze ktoś powinien poważnie zastanowić się nad budową komunikatów błędów. To jest najgłupszy i najbardziej nie zrozumiały błąd jaki mogłem otrzymać w imageprogramie SQL Managment Studio.

Co gorsza kiedyś w przeszłości też miałem ten problem i wiedziałem jak go rozwiązać ,a oczywiście z biegiem lat człowiek o tym zapomniał.

Dlatego zrobiłem o tym wpis ,aby mój odpowiednik z przyszłości wiedział jak rozwiązać ten problem. Podziękujesz mi potem stary.Puszczam oczko

W trakcie procesu dołączenia istniejącej baz danych ze strony Dot.NetNuke napotkałem się na taki problem.

Losowe znaki Czasami istnieje potrzeba wypełnienia danej kolumny, mówiąc delikatnie byle czym.

W takim celu wypadałoby stworzyć jakiś generator tworzący napis z losowym ciągiem znaków. Kiedyś w pracy otrzymałem takie zadanie i z tego, co pamiętam wykorzystałem tę procedurę także do tworzenia losowych haseł oraz do generowania kuponów testowych w aplikacji loteryjnej..

Lock

Jak zlikwidować komunikat - Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created.

ERROR:


SQL SERVER Komunikat

“Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.”

Ten błąd pojawia się gdy używając SQL Server 2008 Management Studio chcesz zmodyfikować strukturę tabeli gdy SQL Server musi skasować i odtworzyć tabele aby wprowadź twoje zmiany.