![]() |
Datenbank: MS SQL Server 2005 • Zugriff über: MS SQL Server 2005 Management Studio
[SQL bzw. TSQL] Komplizierte SQL Anweisung
Hallo,
ich weiß der Titel ist nicht sehr ausagekräftig, aber mir ist grad nix besseres eingefallen... Also zu meinen eigentlichen Problem: Ich habe eine Tabelle mit den Spalten Company (hier steht immer 40 oder 60 drin) NR (hier steht irgendein int drin) Description (hier steht irgendein string) Jetzt will ich alle Caption's auslesen die in 40+60 vorkommen, wobei gilt, wenn es eine NR schon in 40 gibt, soll der Datensatz der Company 60 mit dieser NR weggelassen werden. Ich habe mir sowas überlegt: select distinct nr, Description from mytable Leider geht das nicht, da die Description zu den selben NR der zwei Companys nicht eindeutig ist... Hoffe man versteht mein Problem ;-) Nein, nicht? Na dann noch ein Beispiel: Company NR Description 40 ------- 1 -- Hallo 40 ------- 2 -- Auto 60 ------- 1 -- Essen 60 ------- 5 -- Baum 60 ------- 3 -- Notebook 40 ------- 5 -- Müll Ich will jetzt alles was vorkommt, wenn eine NR doppelt vorkommt, dann die wo Company = 40 ist. also: 1 Hallo 2 Auto 3 Notebook 5 Müll Wie muss hier die SQL Anweisung aussehen? Ferby |
Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung
SQL-Code:
Edit: bitte streichen, das ist wohl nicht das was du willst
SELECT nr, Description FROM mytable
WHERE Company = '40' GROUP BY nr, Description HAVING Count(*) > 1 |
Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung
SQL-Code:
select
distinct t1.nr, t2 Description from mytable t1 join mytabel t2 pn t2.nr = t1.nr where t1.company in (60,90) order by t1.nr, t1.company; |
Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung
Hello,
@shmia: ja ist leider wirklich nicht das was ich gebraucht habe @mkinzler: Habe auch schon an einen join gedacht, aber geglaubt, dass es auch ohne irgendwie lösbar sein muss... werde morgen in der Firma mal dein Statment ausprobieren, Kann jetzt nicht ganz nachvolziehen ob's funktioniert, weil
Code:
ist in meinen Augen immer true, da company es ja nur 60 oder 40 sein kann
where
t1.company in (60,40) --nehm mal an du meinst 40 und nicht 90 !? und warum
Code:
denn wenn die nr bei beiden vorommt, soll die descrition von der firma 40 genommen werden,
select
distinct t1.nr, t2 Description wo macht das deine Abfrage? Vielen Dank |
Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung
SQL-Code:
SELECT company, nr, description
FROM mytable x WHERE company = 40 OR ( company = 60 AND NOT EXISTS (SELECT * FROM mytable WHERE company = 40 AND nr = x.nr)) |
Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung
Hello,
also das schaut auf den ersten Blick super aus, glaub das müsst funktionieren, werde morgen bescheid geben |
Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung
Hallo,
versuch' es mal damit:
SQL-Code:
Das von omata dürfte auch funktionieren.
/* Unser Endergebnis soll so aussehen */
select Company, Nr, Description from mytable where Nr in ( /* Wir wollen nur die Nr haben */ select nr from ( /* Wir wollen die kleinere Nr von denen, die mehr als einmal vorkommen */ select nr, min(company) from mytable where nr in ( /* Wir wollen wissen, welche Nr mehr als einmal vorkommt. */ select nr from ( /* Wir zählen das Vorkommen von Nr */ select nr, count(*) As Anzahl from mytable group by nr ) zwischenergebnis_1 where anzahl > 1 ) group by nr ) zwischenergebnis_2 ) Stephan |
Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung
müsste so auf den ersten blick auch funktionieren, werde mir aber morgen das mal genau angucken
|
Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung
Hello,
super SQL Statments funktionieren. Danke ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz