Just nu i M3-nätverket
Gå till innehåll

Välja en av två kolumner att visa i samma kolumn beroende på vilken som är null


Nuggit

Rekommendera Poster

Hej!

 

Frågorna strömmar återigen.

 

Jag har ytterligare en undran.

Jag håller på med en SQL-fråga där jag vill samla en massa kolumner från olika tabeller.

 

Problemet jag har är att jag vill ha transaktionsdatum med.

 

Denna information finns på två olika platser.

 

I fall 1

"Arbetat tid har lags till på en arbetsorder"

Denna gång finns transaktionsdatumet klart och tydligt i en tabell

(Kolumnen heter TRANS_DATE)

 

I fall 2

"Material har lagts till till arbetsordern"

I detta fall finns inget riktigt transaktionsdatum, utan en "creation_date" för förflyttningen av delen.

(Kolumnen heter CRE_DATE)

 

Fördelen är att när det finns information i TRANS_DATE kolumnen dvs att raden är "arbetstid"  då kommer kolumnen CRE_DATE sakna värde

och tvärtom.

 

Det jag vill göra är helt enkelt "När TRANS_DATE inte är null, visa värdet i CRE_DATE och när TRANS_DATE är null, visa värdet i Trans_date

 

Går detta att lösa? 

I vanliga fall när kolumnerna har samma namn skulle jag göra en 

SELECT TRANS_DATE FROM table WHERE TRANS_ID In (SELECT....)

Men hur löser man detta när det inte är samma kolumnnamn?

Länk till kommentar
Dela på andra webbplatser

 

 

Det jag vill göra är helt enkelt "När TRANS_DATE inte är null, visa värdet i CRE_DATE och när TRANS_DATE är null, visa värdet i Trans_date

Känns bakvänt, varför vill du visa null?

Du menar kanske tvärt om?

 

Ska du visa en lista eller ska du visa dealjer för en arbetsorder?

SELECT TRANS_DATE, CRE_DATE FROM table WHERE ...

Är det detaljer för en arbetsorder så väljer man alla relevant fält för arbetsordern och för jämförelsen i kod, visar CRE_DATE och TRANS_DATE är NULL eller tomt.

Länk till kommentar
Dela på andra webbplatser

Sorry, jag kände att det blev lite rörigt själv.

 

Jo alltså jag vill ju visa den som INTE är null, den ena kommer ALLTID vara null.

 

Det är en lista med alla transaktioner för en arbetsorder...

så varje rad har antingen en rad med arbete eller delar, och vill ha en kolumn för trans_date vars innehåll ska vara ANTINGEN Cre_date eller TRANS_DATE

Länk till kommentar
Dela på andra webbplatser

skicka med båda fälten och titta på det med programkoden och skriv ut därefter.

Länk till kommentar
Dela på andra webbplatser

Enklast är väl: 

Select ISNULL(TRANS_DATE, CRE_DATE) AS TRANS_OR_CRE_DATE 

men mer flexibelt (om än kanske overkill i detta fall) alternativ:

CASE TRANS_DATE WHEN NULL THEN CRE_DATE ELSE TRANS_DATE END AS TRANS_OR_CRE_DATE
Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...