Autor | Zpráva | ||
---|---|---|---|
jio Profil |
#1 · Zasláno: 9. 11. 2007, 10:29:47 · Upravil/a: jio
Dobrý den.
Je možné jedním SELECTem v MS SQL nějak docílit toho, abych dostal rozdíl mezi první operací 01 a první operací 02 pro každé id za daný den?
Nedaří se mi najít cesta jak na to a potřeboval bych alespoň vědět jestli to je vůbec možné nebo to nejde. Děkuji |
||
jio Profil |
#2 · Zasláno: 9. 11. 2007, 10:37:10 · Upravil/a: jio
Doplním
Výsledek by měl být cca takovýto:
|
||
Kajman_ Profil * |
#3 · Zasláno: 9. 11. 2007, 11:31:19
MS neznám, tak si upravte funkce podle ms. Např. takhle nějak by to mohlo jít
select op01.id, op01.den, zobraz_cas(op02.cas-op01.cas) rozdil from (select trunc(datum) den, id, min(datum) cas from tabulka where operace=01 group by trunc(datum), id) op01, (select trunc(datum) den, id, min(datum) cas from tabulka where operace=02 group by trunc(datum), id) op02 where op01.den=op02.den and op01.id=op02.id zobraz_cas - neco co vám převede date/time na časový formát, který chcete trunc - neco, co vám z date/time udělá jen date |
||
jio Profil |
#4 · Zasláno: 9. 11. 2007, 11:33:01 · Upravil/a: jio
Děkuji,
netušil jsem, že je možné použít select v from. Snad se tím prokoušu. |
||
jio Profil |
#5 · Zasláno: 9. 11. 2007, 13:21:14 · Upravil/a: jio
Tak jsem pohořel. MS SQL patrně tuto konstrukci ve from nezná
zadáno bylo
MS SQL Studio Express syntaxi upravil jak je na obrázku, ale nevstřebal to |
||
Kajman_ Profil * |
#6 · Zasláno: 9. 11. 2007, 13:26:49
Já ta měl aliasy op01 a op02. Vy tam máte op1, ale nechal jste odkazování op01. Zkuste to sjednotit.
|
||
jio Profil |
#7 · Zasláno: 9. 11. 2007, 13:33:00
Máte pravdu,
zrovna jsem si toho všiml a velmi se za to stydím |
||
jio Profil |
#8 · Zasláno: 9. 11. 2007, 14:14:05 · Upravil/a: jio
Pokud skript upravím
dostanu Když v op1 změním na op2 ve druhém GROUP BY, tak dostanu stejný výsledek, pouze s tím rozdílem, že v posledním řádku chybového hlášení není op1.den ale op2.den když přiřadím alias pro tabulky
Tak dostanu Popřípadě ještě takto
Netuším v čem je chyba. |
||
Kajman_ Profil * |
#9 · Zasláno: 9. 11. 2007, 14:26:02
V group jsem měl funkci, tu jste zaměnil za alias. Zkuste ji vrátit podle původního příkladu.
|
||
jio Profil |
#10 · Zasláno: 9. 11. 2007, 15:13:58
Děkuji za trpělivost.
Toto už je funkční.
|
||
Kajman_ Profil * |
#11 · Zasláno: 9. 11. 2007, 15:28:37
Když dáte tu podmínku
DatumCasOperace>='2007.10.29' do těch obou vnořených dotazů, tak by to mohlo být znatelně rychlejší. |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0