|
05.11.2009, 11:19
|
#1 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| T-SQL & MS SQL Management Studio Hallöchen ich würde gerne wissen ob sich jemand mit TSQL und am besten auch mit dem Management Studio auskennt. Ich habe da nämlich eine Aufgabe, und ich weis nicht wirklich wie sich das realisieren lässt. Bin noch sehr neu auf dem Gebiet SQL und Scripten.
Also falls sich jemand findet werd ich erklären um was es geht.
liebe Grüße | |
| |
05.11.2009, 20:02
|
#2 (permalink)
| Kaffeejunkie
Registriert seit: 01.05.2002
Beiträge: 5.035
| AW: T-SQL & MS SQL Management Studio Ich kenn zwar T-SQL nicht aber wenn Du Dein Problem schreibst, welches sich mit normalem SQL beschäftigt, kann Dir bestimmt der eine oder andere im Forum hier helfen. | |
| |
06.11.2009, 06:34
|
#3 (permalink)
| IT-Pro aus Leidenschaft
Registriert seit: 28.10.2002
Beiträge: 1.465
| AW: T-SQL & MS SQL Management Studio *handheb*
Schiess mal los...
Cheers,
Joshua | |
| |
06.11.2009, 15:43
|
#4 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| AW: T-SQL & MS SQL Management Studio Boah,...schwer in Worte zu fassen. Der Wert der in die Spalte [Monate_kum] der geschrieben wird sieht wie folgt aus. z.B. "Jan 2000_kum". In der WHERE-Funktion möchte ich festlegen das ein Teil der Zellen, von der Spalte [Monate_kum], im Beispiel "2000" immer gleich des Werts der Spalte [Jahre] aus der Tabelle [Jahre] ist. Hoffe du verstehst das jetzt... wie gesagt, bin noch nicht sehr weit im Verständnis von SQL. Zitat:
TRUNCATE TABLE Zeit_kum
INSERT INTO [Test_Tabelle].[dbo].[Zeit_kum] ([Jahre_kum], [Quartale], [Monate_kum], Monate)
SELECT Jahre + '_kum' , Quartale +' '+ Jahre , Monate, Monat_Basis + ' ' + Jahre
FROM [Monat_Basis] cross join [Jahre] cross join Quartale_Basis cross join [Monat+Jahr_Basis] cross join Zeit_kum
where Jahre = Jahre and SUBSTRING ([dbo].[Zeit_kum].[Monate_kum], 4, 4) = Jahre
GO
| Wenn ich die Abfrage ausführe sind aber keine Zeilen betroffen.
Also wie kann ich jetzt richtig einen JOIN auf die Tabelle [Zeit_kum] machen?
liebe Grüße |
Geändert von k4Ku (06.11.2009 um 16:24 Uhr)
|
| |
11.11.2009, 09:47
|
#5 (permalink)
| Kaffeejunkie
Registriert seit: 01.05.2002
Beiträge: 5.035
| AW: T-SQL & MS SQL Management Studio Geben denn die einzelnen Teile Deiner Query die Richtigen Ergebnisse zurück?
Also gibt z.B.: Code: SELECT SUBSTRING ([dbo].[Zeit_kum].[Monate_kum], 4, 4)
FROM... das Jahr richtig zurück?
Und gibt das SELECT die richtigen ungefilterten Zeilen zurück?
Was bringt Dir in der WHERE Klausel das Jahre = Jahre? 1 = 1 sollte ja immer wahr sein, dann kannst Du das ja eigentlich weglassen und nur den SUBSTRING auf die Gleichheit prüfen. | |
| |
13.11.2009, 09:18
|
#6 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| AW: T-SQL & MS SQL Management Studio Hey, sry das ich so lange nicht geantwortet hab. Das Problem hat sich erledigt. Hab die Idee alles in einer Tabelle anzuordnen verworfen. Mache das jetzt mit immer nur 2 Spalten je Tabelle. Also als Parent-Child-Import. Is glaube ich wesentlich einfach für mich.
Hab aber noch ne andere Frage. Kann ich mit ORDER BY auch nach einem bestimmten Wert aus einer Spalte ordnen? Den Wert würde ich mit SUBSTING, LEFT oder RIGHT abfragen.
Ich hänge mal ein Screen an der das verbildlichen soll. Und zwar möchte ich das in der Spalte "Halbjahr" die werte so geordnet werden, dass nach "2000_HJ1" "2000_HJ2" Folgt.
liebe Grüße | |
| |
13.11.2009, 09:24
|
#7 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| AW: T-SQL & MS SQL Management Studio Ohman! Hat sich wieder erledigt. Tschuldigung.
Hab jetzt einfach mal ORDER BY LEFT(Halbjahre,4) angehängt. Und *bing* siehe da... | |
| |
13.11.2009, 10:22
|
#8 (permalink)
| Kaffeejunkie
Registriert seit: 01.05.2002
Beiträge: 5.035
| AW: T-SQL & MS SQL Management Studio Wenn Du Dir ein bisschen Hintergrundwissen zum Zerlegen einer großen Tabelle in mehrere kleinere aneignen möchtest, kann ich folgenden Artikel aus Wikipedia über die Verschiedenen Normalformen der Datenbanken empfehlen: http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
In der Praxis sollte hier die 3NF einen guten Weg darstellen. | |
| |
13.11.2009, 10:26
|
#9 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| AW: T-SQL & MS SQL Management Studio Ich schau da mal rein danke schön.
Findste das etwa nicht in Ordnung wie ich das jetzt gemacht habe? Hab jetzt eine Dimension in 3 views aufgeteilt und mim Cubeware Importer importiert, alles super gelaufen.
EDIT: Ich glaube Normalformen helfen mir hier nicht weiter, ich lege die Tabellen ja an, um sie später per Import in eine multidimensionale DB zu schreiben. |
Geändert von k4Ku (13.11.2009 um 16:31 Uhr)
|
| |
13.11.2009, 16:30
|
#10 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| AW: T-SQL & MS SQL Management Studio Und weiter geht mit meinen Fragen. Dies mal zu einer FOR-Schleife. Unzwar möchte ich 2 FOR-Schleifen in eine Funktion einbauen, mit der eine temporäre Tabelle erstellt werden soll. Zitat:
USE [Zeit]
GO
/****** Object: UserDefinedFunction [dbo].[Start_AWJ] Script Date: 11/13/2009 16:52:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE FUNCTION [dbo].[Start_AWJ_2]
(
-- Add the parameters for the function here
@startmonat smallint,
@endmonat smallint
)
RETURNS
@tmpAWJ_Monate TABLE
(
-- Add the column definitions for the TABLE variable here
AWJ_Monate smallint
)
AS
BEGIN
-- Fill the table variable with the rows for your result set
declare @schreibmonat smallint
set @startmonat = ( SELECT AWJ_Start FROM AWJ_Start )
set @endmonat = @startmonat -1
declare i smallint
FOR i IN @startmonat .. 12 LOOP
INSERT INTO
@tmpAWJ_Monate
SELECT
@schreibmonat as AWJ_Monate
set @schreibmonat=i
END LOOP;
RETURN
END | So sieht es bisher aus.
Was muss ich für die FOR-Schleife deklarieren? Ich möchte das die erste FOR-Schleife die Werte von der Variable "@startmonat", die ich aus einer Tabelle abgreife, bin zum Wert 12 die Spalte "AWJ_Monate" der temporären Tabelle schreibt. Und das die zweite FOR-Schleife die Werte von 1 bis zur Variable "@endmonat" ( = @startmonat -1) auch in die Spalte "AWJ_Monate" schreibt.
So. Ma sehn, war das alles? Wenn mir jemand helfen möchte, und noch mehr Infos braucht bitte melden.
Bis dann | |
| |
15.11.2009, 22:11
|
#11 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| AW: T-SQL & MS SQL Management Studio Hat sich wieder erledigt. | |
| |
26.11.2009, 10:43
|
#12 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| AW: T-SQL & MS SQL Management Studio Habe mal wieder ne Frage. Und zwar verstehe ich nicht wie das TSQL ordnet, bzw sortiert. Bei diesem Script tritt folgendes Phänomen auf. Zitat:
SELECT 'AWJ_' + Jahre + '_' + AWJ_Monate + '_MK' as AWJ_Monate_MK
FROM vdimAWJ_Perioden_Perioden_Nr CROSS JOIN
vdimJahre
ORDER BY Jahre
| Ich greife dabei auf die Tabelle AWJ_Monate zu die so aussieht: http://www.tweakpc.de/forum/attachme...1&d=1259231973
Wenn ich jetzt wie im Script noch die Jahre dazu schmeiße, und nach den Jahren ordne, dann kommt aber das hier raus. http://www.tweakpc.de/forum/attachme...1&d=1259231973
Das geht dann immer so weiter 1x richtig 1x komisch...immer abwechselnd. Warum? Wenn er es doch für das Jahr 2000 hin bekommt, warum nicht auch für das Jahr 2001?
liebe Grüße | |
| |
27.11.2009, 10:15
|
#13 (permalink)
| Kaffeejunkie
Registriert seit: 01.05.2002
Beiträge: 5.035
| AW: T-SQL & MS SQL Management Studio Das ist ganz normal. Du sortierst hier nach Jahren und diese werden richtig sortiert. Alle anderen Werte werden nichtdeterministisch sortiert (oft nach der Reihenfolge des ursprünglichen Einfügens).
Wenn Du die Monate auch sortiert haben willst musst Du die OrderBy Klausel um die Monate erweitern. | |
| |
27.11.2009, 18:24
|
#14 (permalink)
| Overclocker
Registriert seit: 10.08.2006
Beiträge: 398
| AW: T-SQL & MS SQL Management Studio Die Reihenfolge mit dem 4. Monat beginnend ist schon korrekt. Das ist ein abweichendes Wirtschaftsjahr was hier abgebildet wird, und beginnt in diesem Falle im April.
Mir gehts darum das er für das 1. Jahr die korrekte Reihenfolge nimmt, und für das 2. in der umgekehrten Reihenfolge, usw., immer abwechselnd.
liebe Grüße | |
| | |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Forumregeln
| Es ist dir nicht erlaubt, neue Themen zu verfassen. Es ist dir nicht erlaubt, auf Beiträge zu antworten. Es ist dir nicht erlaubt, Anhänge hochzuladen. Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr. | | |