Tomasz Drzazga

Tomasz Drzazga Informatyk, Infolex
Duszniki-Zdrój

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Witam,

Mam zrobić raport wadliwości dla każdego dnia w podanym miesiącu. Raport dla całego miesiąca to nie problem, ale pokazanie wadliwości dla każdego dnia miesiąca osobno to już trudniejsza sprawa.

Tak wygląda wynik dla całego miesiąca:


Obrazek


Ja potrzebuję zrobić tak, aby było 31 kolumn ponumerowanych od 1 do 31 i wadliwość dla każdej kolumny (dnia).
Nagłówek powinien wyglądać następująco:


Obrazek


Nie jest to proste, ale wydaje mi się, że da się to zrobić. Doradźcie mi jak to ugryźć:)Ten post został edytowany przez Autora dnia 11.03.16 o godzinie 08:23

konto usunięte

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Zacznijmy, może od tego, jak wygląda struktura tabeli/tabel, z których robiony ma być raport. Chodzi o to, jak wygląda możliwość agregacji danych dla każdego dnia.
(EDIT) No i może jeszcze coś o środowisku ....Ten post został edytowany przez Autora dnia 11.03.16 o godzinie 09:54
Piotr Z.

Piotr Z. programista

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Jeśli raport ma być na SQL Server (tak to wygląda z załączonego wyniku Pana zapytania), to myślę, że to:
http://www.codeproject.com/Tips/500811/Simple-Way-To-U...
powinno pomóc.Ten post został edytowany przez Autora dnia 11.03.16 o godzinie 10:05
Tomasz Drzazga

Tomasz Drzazga Informatyk, Infolex
Duszniki-Zdrój

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Środowisko to MS SQL SERVER.

Zapytanie wygląda tak:
select CyS_RodajDetalu, sum(CyS_Ilosc) as wadliwosc from CynkowniaNag left join
CynkowniaElem on CyN_Id = CyE_Id left join
CynkowniaSubElem on CyS_ProcesID = CyE_ProcesID
--where CyN_Indeks = '5300000004A'
group by CyS_RodajDetalu
Piotr Z.

Piotr Z. programista

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Panu Maciejowi chodziło, by pokazać w zapytaniu lub w wyniku zapytania, kolumnę bądź kolumny przechowujące dane związane z datą tej wadliwości.

W pokazanym zapytaniu będzie to zapewne data (kolumny z datą) z tabeli przechowującej CyS_ILosc.
Tomasz Drzazga

Tomasz Drzazga Informatyk, Infolex
Duszniki-Zdrój

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Data jest w tabeli CynkowniaElem , kolumna CyE_Data

select CyS_RodajDetalu, CyE_Data, sum(CyS_Ilosc) as wadliwosc from CynkowniaNag left join
CynkowniaElem on CyN_Id = CyE_Id left join
CynkowniaSubElem on CyS_ProcesID = CyE_ProcesID
group by CyS_RodajDetalu, CyE_Data

To jest tak:
Tabela CynkowniaNag zawiera nagłówek, CynkowniaElem zawiera elementy, a CynkowniaSubElem zawiera poszczególne RodzajeDetalu (czyli kod wadliwości).

konto usunięte

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Tomasz D.:
Data jest w tabeli CynkowniaElem , kolumna CyE_Data

select CyS_RodajDetalu, CyE_Data, sum(CyS_Ilosc) as wadliwosc from CynkowniaNag left join
CynkowniaElem on CyN_Id = CyE_Id left join
CynkowniaSubElem on CyS_ProcesID = CyE_ProcesID
group by CyS_RodajDetalu, CyE_Data


To jest tak:
Tabela CynkowniaNag zawiera nagłówek, CynkowniaElem zawiera elementy, a CynkowniaSubElem zawiera poszczególne RodzajeDetalu (czyli kod wadliwości).
Czyli ma Pan rozwiązanie. W tym zapytaniu, dla ułatwienia, warto sobie datę rozbić na oddzielne "dzień", "miesiąc" , "rok" (i po nich też grupować)
Najłatwiej sobie "przylinkować" je do arkusza EXCEL i w nim zasilać bezpośrednio tabelę przestawną...
Zrobienie takiej wyliczanki poziomej jako bezpośredni raport SQL będzie bardziej kłopotliwe ale nie niemożliwe... Nie wiem, czy MS SQL SERVER aktualnie obsługuje już tabele przestawne tak jak ORACLE (np)?
...
Tomasz Drzazga

Tomasz Drzazga Informatyk, Infolex
Duszniki-Zdrój

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Dziękuję za porady. Muszę teraz pokombinować jak to dobrze zapisać.
W Oracle była taka opcja z tabelami przestawnymi a MS SQL nie sprawdzałem.
Może właśnie wykorzystam poradę z linku od Pana Piotra. Tylko zastanawiam się jak to połączyć z wynikiem mojego zapytania. Będę kombinował i jak coś napiszę.

konto usunięte

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Chyba są te tabele przestawne...
http://blogs.msdn.com/b/spike/archive/2009/03/03/pivot...
https://technet.microsoft.com/pl-pl/library/ms177410(v=...
Paweł Broda

Paweł Broda Software Engineer

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

do takich operacji służy klauzula PIVOT: https://technet.microsoft.com/pl-pl/library/ms177410%28...

EDIT: ups, nie zauważyłem komentarza wyżej ;) Ten post został edytowany przez Autora dnia 11.03.16 o godzinie 13:09

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Jeśli jest określona ilość wad, poniżej zapytanie pisane na piechotę. W przykładzie tylko 4-y wady (może lepiej napisać procedurę ... ).

DECLARE @mc VARCHAR(2)= '3'
SELECT 'nazwaWady 1'AS 'Rodzaj detalu\Dzien mc',SUM(CASE WHEN 1 = t.dzien THEN t.ilosc ELSE 0 END) AS '1'
, SUM(CASE WHEN 2 = t.dzien THEN t.ilosc ELSE 0 END) AS '2'
, SUM(CASE WHEN 3 = t.dzien THEN t.ilosc ELSE 0 END) AS '3'
, SUM(CASE WHEN 4 = t.dzien THEN t.ilosc ELSE 0 END) AS '4'
, SUM(CASE WHEN 5 = t.dzien THEN t.ilosc ELSE 0 END) AS '5'
, SUM(CASE WHEN 6 = t.dzien THEN t.ilosc ELSE 0 END) AS '6'
, SUM(CASE WHEN 7 = t.dzien THEN t.ilosc ELSE 0 END) AS '7'
, SUM(CASE WHEN 8 = t.dzien THEN t.ilosc ELSE 0 END) AS '8'
, SUM(CASE WHEN 9 = t.dzien THEN t.ilosc ELSE 0 END) AS '9'
, SUM(CASE WHEN 10 = t.dzien THEN t.ilosc ELSE 0 END) AS '10'
, SUM(CASE WHEN 11 = t.dzien THEN t.ilosc ELSE 0 END) AS '11'
, SUM(CASE WHEN 12 = t.dzien THEN t.ilosc ELSE 0 END) AS '12'
, SUM(CASE WHEN 13 = t.dzien THEN t.ilosc ELSE 0 END) AS '13'
, SUM(CASE WHEN 14 = t.dzien THEN t.ilosc ELSE 0 END) AS '14'
, SUM(CASE WHEN 15 = t.dzien THEN t.ilosc ELSE 0 END) AS '15'
, SUM(CASE WHEN 16 = t.dzien THEN t.ilosc ELSE 0 END) AS '16'
, SUM(CASE WHEN 17 = t.dzien THEN t.ilosc ELSE 0 END) AS '17'
, SUM(CASE WHEN 18 = t.dzien THEN t.ilosc ELSE 0 END) AS '18'
, SUM(CASE WHEN 19 = t.dzien THEN t.ilosc ELSE 0 END) AS '19'
, SUM(CASE WHEN 20 = t.dzien THEN t.ilosc ELSE 0 END) AS '20'
, SUM(CASE WHEN 21 = t.dzien THEN t.ilosc ELSE 0 END) AS '21'
, SUM(CASE WHEN 22 = t.dzien THEN t.ilosc ELSE 0 END) AS '22'
, SUM(CASE WHEN 23 = t.dzien THEN t.ilosc ELSE 0 END) AS '23'
, SUM(CASE WHEN 24 = t.dzien THEN t.ilosc ELSE 0 END) AS '24'
, SUM(CASE WHEN 25 = t.dzien THEN t.ilosc ELSE 0 END) AS '25'
, SUM(CASE WHEN 26 = t.dzien THEN t.ilosc ELSE 0 END) AS '26'
, SUM(CASE WHEN 27 = t.dzien THEN t.ilosc ELSE 0 END) AS '27'
, SUM(CASE WHEN 28 = t.dzien THEN t.ilosc ELSE 0 END) AS '28'
, SUM(CASE WHEN 29 = t.dzien THEN t.ilosc ELSE 0 END) AS '29'
, SUM(CASE WHEN 30 = t.dzien THEN t.ilosc ELSE 0 END) AS '30'
, SUM(CASE WHEN 31 = t.dzien THEN t.ilosc ELSE 0 END) AS '31'
FROM (SELECT DAY(dataWady) dzien, COUNT(1) ilosc
FROM [dbo].wady w
WHERE wada = 'nazwaWady 1 ' AND MONTH(dataWady) = @mc
GROUP BY DAY(dataWady)) t
UNION
SELECT 'nazwaWady 2',SUM(CASE WHEN 1 = t.dzien THEN t.ilosc ELSE 0 END) AS '1'
, SUM(CASE WHEN 2 = t.dzien THEN t.ilosc ELSE 0 END) AS '2'
, SUM(CASE WHEN 3 = t.dzien THEN t.ilosc ELSE 0 END) AS '3'
, SUM(CASE WHEN 4 = t.dzien THEN t.ilosc ELSE 0 END) AS '4'
, SUM(CASE WHEN 5 = t.dzien THEN t.ilosc ELSE 0 END) AS '5'
, SUM(CASE WHEN 6 = t.dzien THEN t.ilosc ELSE 0 END) AS '6'
, SUM(CASE WHEN 7 = t.dzien THEN t.ilosc ELSE 0 END) AS '7'
, SUM(CASE WHEN 8 = t.dzien THEN t.ilosc ELSE 0 END) AS '8'
, SUM(CASE WHEN 9 = t.dzien THEN t.ilosc ELSE 0 END) AS '9'
, SUM(CASE WHEN 10 = t.dzien THEN t.ilosc ELSE 0 END) AS '10'
, SUM(CASE WHEN 11 = t.dzien THEN t.ilosc ELSE 0 END) AS '11'
, SUM(CASE WHEN 12 = t.dzien THEN t.ilosc ELSE 0 END) AS '12'
, SUM(CASE WHEN 13 = t.dzien THEN t.ilosc ELSE 0 END) AS '13'
, SUM(CASE WHEN 14 = t.dzien THEN t.ilosc ELSE 0 END) AS '14'
, SUM(CASE WHEN 15 = t.dzien THEN t.ilosc ELSE 0 END) AS '15'
, SUM(CASE WHEN 16 = t.dzien THEN t.ilosc ELSE 0 END) AS '16'
, SUM(CASE WHEN 17 = t.dzien THEN t.ilosc ELSE 0 END) AS '17'
, SUM(CASE WHEN 18 = t.dzien THEN t.ilosc ELSE 0 END) AS '18'
, SUM(CASE WHEN 19 = t.dzien THEN t.ilosc ELSE 0 END) AS '19'
, SUM(CASE WHEN 20 = t.dzien THEN t.ilosc ELSE 0 END) AS '20'
, SUM(CASE WHEN 21 = t.dzien THEN t.ilosc ELSE 0 END) AS '21'
, SUM(CASE WHEN 22 = t.dzien THEN t.ilosc ELSE 0 END) AS '22'
, SUM(CASE WHEN 23 = t.dzien THEN t.ilosc ELSE 0 END) AS '23'
, SUM(CASE WHEN 24 = t.dzien THEN t.ilosc ELSE 0 END) AS '24'
, SUM(CASE WHEN 25 = t.dzien THEN t.ilosc ELSE 0 END) AS '25'
, SUM(CASE WHEN 26 = t.dzien THEN t.ilosc ELSE 0 END) AS '26'
, SUM(CASE WHEN 27 = t.dzien THEN t.ilosc ELSE 0 END) AS '27'
, SUM(CASE WHEN 28 = t.dzien THEN t.ilosc ELSE 0 END) AS '28'
, SUM(CASE WHEN 29 = t.dzien THEN t.ilosc ELSE 0 END) AS '29'
, SUM(CASE WHEN 30 = t.dzien THEN t.ilosc ELSE 0 END) AS '30'
, SUM(CASE WHEN 31 = t.dzien THEN t.ilosc ELSE 0 END) AS '31'
FROM (SELECT DAY(dataWady) dzien, COUNT(1) ilosc
FROM [dbo].wady w
WHERE wada = 'nazwaWady 2' AND MONTH(dataWady) = @mc
GROUP BY DAY(dataWady)) t
UNION
SELECT 'nazwaWady 3',SUM(CASE WHEN 1 = t.dzien THEN t.ilosc ELSE 0 END) AS '1'
, SUM(CASE WHEN 2 = t.dzien THEN t.ilosc ELSE 0 END) AS '2'
, SUM(CASE WHEN 3 = t.dzien THEN t.ilosc ELSE 0 END) AS '3'
, SUM(CASE WHEN 4 = t.dzien THEN t.ilosc ELSE 0 END) AS '4'
, SUM(CASE WHEN 5 = t.dzien THEN t.ilosc ELSE 0 END) AS '5'
, SUM(CASE WHEN 6 = t.dzien THEN t.ilosc ELSE 0 END) AS '6'
, SUM(CASE WHEN 7 = t.dzien THEN t.ilosc ELSE 0 END) AS '7'
, SUM(CASE WHEN 8 = t.dzien THEN t.ilosc ELSE 0 END) AS '8'
, SUM(CASE WHEN 9 = t.dzien THEN t.ilosc ELSE 0 END) AS '9'
, SUM(CASE WHEN 10 = t.dzien THEN t.ilosc ELSE 0 END) AS '10'
, SUM(CASE WHEN 11 = t.dzien THEN t.ilosc ELSE 0 END) AS '11'
, SUM(CASE WHEN 12 = t.dzien THEN t.ilosc ELSE 0 END) AS '12'
, SUM(CASE WHEN 13 = t.dzien THEN t.ilosc ELSE 0 END) AS '13'
, SUM(CASE WHEN 14 = t.dzien THEN t.ilosc ELSE 0 END) AS '14'
, SUM(CASE WHEN 15 = t.dzien THEN t.ilosc ELSE 0 END) AS '15'
, SUM(CASE WHEN 16 = t.dzien THEN t.ilosc ELSE 0 END) AS '16'
, SUM(CASE WHEN 17 = t.dzien THEN t.ilosc ELSE 0 END) AS '17'
, SUM(CASE WHEN 18 = t.dzien THEN t.ilosc ELSE 0 END) AS '18'
, SUM(CASE WHEN 19 = t.dzien THEN t.ilosc ELSE 0 END) AS '19'
, SUM(CASE WHEN 20 = t.dzien THEN t.ilosc ELSE 0 END) AS '20'
, SUM(CASE WHEN 21 = t.dzien THEN t.ilosc ELSE 0 END) AS '21'
, SUM(CASE WHEN 22 = t.dzien THEN t.ilosc ELSE 0 END) AS '22'
, SUM(CASE WHEN 23 = t.dzien THEN t.ilosc ELSE 0 END) AS '23'
, SUM(CASE WHEN 24 = t.dzien THEN t.ilosc ELSE 0 END) AS '24'
, SUM(CASE WHEN 25 = t.dzien THEN t.ilosc ELSE 0 END) AS '25'
, SUM(CASE WHEN 26 = t.dzien THEN t.ilosc ELSE 0 END) AS '26'
, SUM(CASE WHEN 27 = t.dzien THEN t.ilosc ELSE 0 END) AS '27'
, SUM(CASE WHEN 28 = t.dzien THEN t.ilosc ELSE 0 END) AS '28'
, SUM(CASE WHEN 29 = t.dzien THEN t.ilosc ELSE 0 END) AS '29'
, SUM(CASE WHEN 30 = t.dzien THEN t.ilosc ELSE 0 END) AS '30'
, SUM(CASE WHEN 31 = t.dzien THEN t.ilosc ELSE 0 END) AS '31'
FROM (SELECT DAY(dataWady) dzien, COUNT(1) ilosc
FROM [dbo].wady w
WHERE wada = 'nazwaWady 3' AND MONTH(dataWady) = @mc
GROUP BY DAY(dataWady)) t
UNION
SELECT 'nazwaWady 4',SUM(CASE WHEN 1 = t.dzien THEN t.ilosc ELSE 0 END) AS '1'
, SUM(CASE WHEN 2 = t.dzien THEN t.ilosc ELSE 0 END) AS '2'
, SUM(CASE WHEN 3 = t.dzien THEN t.ilosc ELSE 0 END) AS '3'
, SUM(CASE WHEN 4 = t.dzien THEN t.ilosc ELSE 0 END) AS '4'
, SUM(CASE WHEN 5 = t.dzien THEN t.ilosc ELSE 0 END) AS '5'
, SUM(CASE WHEN 6 = t.dzien THEN t.ilosc ELSE 0 END) AS '6'
, SUM(CASE WHEN 7 = t.dzien THEN t.ilosc ELSE 0 END) AS '7'
, SUM(CASE WHEN 8 = t.dzien THEN t.ilosc ELSE 0 END) AS '8'
, SUM(CASE WHEN 9 = t.dzien THEN t.ilosc ELSE 0 END) AS '9'
, SUM(CASE WHEN 10 = t.dzien THEN t.ilosc ELSE 0 END) AS '10'
, SUM(CASE WHEN 11 = t.dzien THEN t.ilosc ELSE 0 END) AS '11'
, SUM(CASE WHEN 12 = t.dzien THEN t.ilosc ELSE 0 END) AS '12'
, SUM(CASE WHEN 13 = t.dzien THEN t.ilosc ELSE 0 END) AS '13'
, SUM(CASE WHEN 14 = t.dzien THEN t.ilosc ELSE 0 END) AS '14'
, SUM(CASE WHEN 15 = t.dzien THEN t.ilosc ELSE 0 END) AS '15'
, SUM(CASE WHEN 16 = t.dzien THEN t.ilosc ELSE 0 END) AS '16'
, SUM(CASE WHEN 17 = t.dzien THEN t.ilosc ELSE 0 END) AS '17'
, SUM(CASE WHEN 18 = t.dzien THEN t.ilosc ELSE 0 END) AS '18'
, SUM(CASE WHEN 19 = t.dzien THEN t.ilosc ELSE 0 END) AS '19'
, SUM(CASE WHEN 20 = t.dzien THEN t.ilosc ELSE 0 END) AS '20'
, SUM(CASE WHEN 21 = t.dzien THEN t.ilosc ELSE 0 END) AS '21'
, SUM(CASE WHEN 22 = t.dzien THEN t.ilosc ELSE 0 END) AS '22'
, SUM(CASE WHEN 23 = t.dzien THEN t.ilosc ELSE 0 END) AS '23'
, SUM(CASE WHEN 24 = t.dzien THEN t.ilosc ELSE 0 END) AS '24'
, SUM(CASE WHEN 25 = t.dzien THEN t.ilosc ELSE 0 END) AS '25'
, SUM(CASE WHEN 26 = t.dzien THEN t.ilosc ELSE 0 END) AS '26'
, SUM(CASE WHEN 27 = t.dzien THEN t.ilosc ELSE 0 END) AS '27'
, SUM(CASE WHEN 28 = t.dzien THEN t.ilosc ELSE 0 END) AS '28'
, SUM(CASE WHEN 29 = t.dzien THEN t.ilosc ELSE 0 END) AS '29'
, SUM(CASE WHEN 30 = t.dzien THEN t.ilosc ELSE 0 END) AS '30'
, SUM(CASE WHEN 31 = t.dzien THEN t.ilosc ELSE 0 END) AS '31'
FROM (SELECT DAY(dataWady) dzien, COUNT(1) ilosc
FROM [dbo].wady w
WHERE wada = 'nazwaWady 4' AND MONTH(dataWady) = @mc
GROUP BY DAY(dataWady)) t


Dane testowe:

SELECT * INTO [dbo].wady
FROM (SELECT 'nazwaWady 1' AS wada, GETDATE() AS dataWady
UNION ALL
SELECT 'nazwaWady 2', DATEADD(day,-2,GETDATE())
UNION ALL
SELECT 'nazwaWady 2', DATEADD(day,-1,GETDATE())
UNION ALL
SELECT 'nazwaWady 3', DATEADD(day,-4,GETDATE())
UNION ALL
SELECT 'nazwaWady 1', DATEADD(day,-5,GETDATE())
UNION ALL
SELECT 'nazwaWady 2', DATEADD(day,-4,GETDATE())
UNION ALL
SELECT 'nazwaWady 1', DATEADD(day,-6,GETDATE())
UNION ALL
SELECT 'nazwaWady 1', DATEADD(day,-3,GETDATE())
UNION ALL
SELECT 'nazwaWady 4', DATEADD(day,-7,GETDATE())
UNION ALL
SELECT 'nazwaWady 1', DATEADD(day,-3,GETDATE())
UNION ALL
SELECT 'nazwaWady 4', DATEADD(day,-7,GETDATE())
UNION ALL
SELECT 'nazwaWady 1', DATEADD(day,-3,GETDATE())
UNION ALL
SELECT 'nazwaWady 4', DATEADD(day,-7,GETDATE())
UNION ALL
SELECT 'nazwaWady 1', DATEADD(day,-3,GETDATE())
UNION ALL
SELECT 'nazwaWady 4', DATEADD(day,-7,GETDATE())
) tab
Tomasz Drzazga

Tomasz Drzazga Informatyk, Infolex
Duszniki-Zdrój

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Super, dziękuję za napisanie praktycznie całego zapytania :-) Bede testował w poniedziałek i dam znać jak mi poszło
Tomasz Drzazga

Tomasz Drzazga Informatyk, Infolex
Duszniki-Zdrój

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Dziękuję wszystkim za pomoc w napisaniu zapytania.
Wykorzystałem sposób Pani Małgorzaty tylko nie łączyłem zapytań poprzez Union. Zrobiłem tak, że jest jedno zapytanie, a Nazwa wady jest pobierana dynamicznie z tabeli i na końcu grupuje dodatkowo wg nazwy wady.

Pozdrawiam
Marcin Bugowski

Marcin Bugowski HR Process Analyst,
Payroll System
Administrator,
Citiban...

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Witam,

czy mogę prosić o jakieś namiary na ORACLE vs. Tabele przestawne?

Badam je sobie dopiero w Excelu, ale chętnie skorzystam z połączenia, tym bardziej, że mówicie Panowie się da.

Z góry dziękuję.

Maciej B.:
Tomasz D.:
Data jest w tabeli CynkowniaElem , kolumna CyE_Data

select CyS_RodajDetalu, CyE_Data, sum(CyS_Ilosc) as wadliwosc from CynkowniaNag left join
CynkowniaElem on CyN_Id = CyE_Id left join
CynkowniaSubElem on CyS_ProcesID = CyE_ProcesID
group by CyS_RodajDetalu, CyE_Data


To jest tak:
Tabela CynkowniaNag zawiera nagłówek, CynkowniaElem zawiera elementy, a CynkowniaSubElem zawiera poszczególne RodzajeDetalu (czyli kod wadliwości).
Czyli ma Pan rozwiązanie. W tym zapytaniu, dla ułatwienia, warto sobie datę rozbić na oddzielne "dzień", "miesiąc" , "rok" (i po nich też grupować)
Najłatwiej sobie "przylinkować" je do arkusza EXCEL i w nim zasilać bezpośrednio tabelę przestawną...
Zrobienie takiej wyliczanki poziomej jako bezpośredni raport SQL będzie bardziej kłopotliwe ale nie niemożliwe... Nie wiem, czy MS SQL SERVER aktualnie obsługuje już tabele przestawne tak jak ORACLE (np)?
...

konto usunięte

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

Marcin B.:
Witam,

czy mogę prosić o jakieś namiary na ORACLE vs. Tabele przestawne?

Badam je sobie dopiero w Excelu, ale chętnie skorzystam z połączenia, tym bardziej, że mówicie Panowie się da.

Z góry dziękuję.

Maciej B.:
Tomasz D.:
Data jest w tabeli CynkowniaElem , kolumna CyE_Data

select CyS_RodajDetalu, CyE_Data, sum(CyS_Ilosc) as wadliwosc from CynkowniaNag left join
CynkowniaElem on CyN_Id = CyE_Id left join
CynkowniaSubElem on CyS_ProcesID = CyE_ProcesID
group by CyS_RodajDetalu, CyE_Data


To jest tak:
Tabela CynkowniaNag zawiera nagłówek, CynkowniaElem zawiera elementy, a CynkowniaSubElem zawiera poszczególne RodzajeDetalu (czyli kod wadliwości).
Czyli ma Pan rozwiązanie. W tym zapytaniu, dla ułatwienia, warto sobie datę rozbić na oddzielne "dzień", "miesiąc" , "rok" (i po nich też grupować)
Najłatwiej sobie "przylinkować" je do arkusza EXCEL i w nim zasilać bezpośrednio tabelę przestawną...
Zrobienie takiej wyliczanki poziomej jako bezpośredni raport SQL będzie bardziej kłopotliwe ale nie niemożliwe... Nie wiem, czy MS SQL SERVER aktualnie obsługuje już tabele przestawne tak jak ORACLE (np)?
...
Powinno starczyć...
http://www.techonthenet.com/oracle/pivot.php
Marcin Bugowski

Marcin Bugowski HR Process Analyst,
Payroll System
Administrator,
Citiban...

Temat: Wynik zapytania dla każdego dnia w miesiącu w jednym...

dzięki, wczytuje się :)

Maciej B.:
Marcin B.:
Witam,

czy mogę prosić o jakieś namiary na ORACLE vs. Tabele przestawne?

Badam je sobie dopiero w Excelu, ale chętnie skorzystam z połączenia, tym bardziej, że mówicie Panowie się da.

Z góry dziękuję.

Maciej B.:
Tomasz D.:
Data jest w tabeli CynkowniaElem , kolumna CyE_Data

select CyS_RodajDetalu, CyE_Data, sum(CyS_Ilosc) as wadliwosc from CynkowniaNag left join
CynkowniaElem on CyN_Id = CyE_Id left join
CynkowniaSubElem on CyS_ProcesID = CyE_ProcesID
group by CyS_RodajDetalu, CyE_Data


To jest tak:
Tabela CynkowniaNag zawiera nagłówek, CynkowniaElem zawiera elementy, a CynkowniaSubElem zawiera poszczególne RodzajeDetalu (czyli kod wadliwości).
Czyli ma Pan rozwiązanie. W tym zapytaniu, dla ułatwienia, warto sobie datę rozbić na oddzielne "dzień", "miesiąc" , "rok" (i po nich też grupować)
Najłatwiej sobie "przylinkować" je do arkusza EXCEL i w nim zasilać bezpośrednio tabelę przestawną...
Zrobienie takiej wyliczanki poziomej jako bezpośredni raport SQL będzie bardziej kłopotliwe ale nie niemożliwe... Nie wiem, czy MS SQL SERVER aktualnie obsługuje już tabele przestawne tak jak ORACLE (np)?
...
Powinno starczyć...
http://www.techonthenet.com/oracle/pivot.php

Następna dyskusja:

MS SQL i automatyczny expor...




Wyślij zaproszenie do