wtorek, 13 stycznia 2015

AFIN.NET.IS - Konsolidacja arkuszy z filtrem

> (...)
> potrzebuje małej pomocy :)
>
> Przygotowałem pewne zestawienie składające się z około 10    
> arkuszy. Teraz chciałbym wyłowić ze wszystkich arkuszy    
> powtarzające się ciągi znaków składające się z 3 liter np.    
> XYZ i automatycznie skopiować cały wiersz w którym wystąpił    
> ciąg znaków do nowego arkusza o takiej samej nazwie (XYZ).

Czy można?
Pewnie. I to jak łatwo-szybko-bezbłędnie.

Filmik:
http://afin.net/webcasts/ZZZ_KonsolidacjaArkuszyZFiltrem.swf

poniedziałek, 12 stycznia 2015

SQLS - Kopia bazy pomiędzy serwerami

Jak wiadomo, bazy danych to poważna sprawa!
Tak śmiertelnie poważna, że można walnąć w ramki i się    
przykryć nogami ze śmiechu, jak się widzi, jak bazodanowcy tej    
powagi bronią.

A tu, weźmy sobie bazkę w bardzo poważnym MS SQL Server Express i    
zróbmy sobie jej kopię do jeszcze bardziej śmiertelnie poważnego    
MS SQL Server 2012 BI.
Sterownikiem accessowym, a co, nie wolno?
Klikając STARTA w Excelku, oczywiście.

Filmik:
http://afin.net/webcasts/Demo_AfinNetIs_CopySqlsDb1ToSqlsDb2.swf

środa, 7 stycznia 2015

Ciekawostka SQL: Sprzedaż wg grup dat, niekoniecznie mających ową sprzedaż

No..., to trzeba potraktować daty... iloczynem kartezjańskim! (widok t1), po to, że jak nie ma daty, to trzeba ją zrobić, by potem dołączyć do niej, nieistniejącą dla niej, sprzedaż (widok t2).
Warto się uczyć SQLka, chłopaki i dziewczyny.
*************
> [author]Jacek P.:[/author]
> Witam,
> mam kwerendę, która wyświetla pewne wartości dla miesięcy w    
> danych latach. Technicznie kwerenda oparta jest o inną kwerendę    
> a ta o tabelę. Nie dla każdego miesiąca mam wartości w tabeli    
> stąd moja kwerenda wynikowa wyświetla tylko niektóre miesiące.    
> Jak zrobić żeby w wyniku mieć wszystkie miesiące począwszy od    
> danej daty, ze stałymi wartościami dla miesięcy, które nie    
> pojawiają się w tabeli?

SQLek:
SELECT t1.[DataRM], t2.[Sprzedaz] FROM
(SELECT DISTINCT FORMAT(r.[data],'yyyy') & '.' &    
FORMAT(m.[data],'mm') AS [DataRM] FROM [Faktura$] r, [Faktura$] m)    
t1
LEFT OUTER JOIN
(SELECT FORMAT([data],'yyyy.mm') AS [DataRM], SUM([wart_net]) AS    
[Sprzedaz] FROM [Faktura$] GROUP BY FORMAT([data],'yyyy.mm')) t2
ON t1.[DataRM]=t2.[DataRM]

Tabelka:
http://afin.net/samples/Data/ODBC/SalesInHTML/Faktura.htm

Wynik:
DataRM    Sprzedaz
2004.01    140
2004.02    41
2004.03    118,4
2004.04    153,9
2004.05    42,6
2004.06    15
2004.07    5
2004.08    3,9
2004.09    13,6
2004.10    5,8
2004.11    4,5
2004.12    11
2005.01    5,2
2005.02    25,5
2005.03    5,5
2005.04    10,4
2005.05    0
2005.06    4,8
2005.07    16,2
2005.08    40,5
2005.09    0
2005.10    0
2005.11    0
2005.12    0

Ciekawostka SQL: Tylko pierwsi!

Ciekawe! Jak wyciągnąć TYLKO PIERWSZY REKORD w danej grupie    
rekordów, ale nie ograniczając widoku do tej grupy, tylko po    
wszystkich grupach z tabeli.
Kluczem jest relacja tabeli z SELECTem zagnieżdżonym, tworzącym    
pole tej tabeli (RowNum)
Warto się uczyć SQLka, chłopaki i dziewczyny.
************

SELECT t1.miasto, t1.nazwa,
  (SELECT COUNT(*) FROM [odbiorca$] AS t2 WHERE t2.nazwa <=    
t1.nazwa AND t1.miasto = t2.miasto) AS RowNum
FROM [odbiorca$] t1
WHERE (SELECT COUNT(*) FROM odbiorca AS t2 WHERE t2.nazwa <=    
t1.nazwa AND t1.miasto = t2.miasto) =1
ORDER BY t1.miasto, t1.nazwa

tu tabelka:
http://afin.net/samples/Data/ODBC/SalesInHTML/Odbiorca.htm

A tu wynik:
miasto    nazwa    RowNum
BIALYSTOK    NOWAK    1
CIECHANOW    ANEX    1
GDANSK    GRZESIEX    1
LEGNICA    EDEX    1
OPOLE    BRONEX    1
SZCZECIN    CELIMP    1
WARSZAWA    IMPEX    1
WROCLAW    AREX    1

Tylko pierwsze numerki. Bez OVER PARTITION BY.
Zrobiłem na podstawie    
http://www.experts-exchange.com/Database/MS_Access/Q_24583991.html
z PLIKU EXCELA na STEROWNIKU EXCELOWYM.