navngi kolonner i excel med komplekse SQL

stemmer
0

Jeg prøver å kjøre denne SQL hjelp får ekstern.

Det fungerer, men når jeg prøver å endre navn på sub-spørringer eller noe for den saks skyld det fjerne den.

Jeg prøvde as, asog navnet på '', asså navnet på , og det samme med plass. Hva er den riktige måten å gjøre det?

Relevant SQL:

SELECT list_name, app_name, 
    (SELECT fname  + ' ' + lname  
     FROM dbo.d_agent_define map 
     WHERE map.agent_id = tac.agent_id) as agent_login, 
   input, CONVERT(varchar,DATEADD(ss,TAC_BEG_tstamp,'01/01/1970'))
FROM dbo.maps_report_list list 
JOIN dbo.report_tac_agent tac ON (tac.list_id = list.list_id)
WHERE input = 'SYS_ERR' 
   AND app_name = 'CHARLOTT'
   AND convert(VARCHAR,DATEADD(ss,day_tstamp,'01/01/1970'),101) = '09/10/2008'
   AND list_name LIKE 'NRBAD%'
ORDER BY agent_login,CONVERT(VARCHAR,DATEADD(ss,TAC_BEG_tstamp,'01/01/1970'))
Publisert på 17/09/2008 klokken 23:40
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Du kan bli kvitt din dbo.d_agent_definedelspørring og bare legge inn en bli til agenten definere tabellen.

Ville denne koden arbeid?

select list_name, app_name, 
map.fname + ' ' + map.lname as agent_login, 
input, 
convert(varchar,dateadd(ss,TAC_BEG_tstamp,'01/01/1970')) as tac_seconds
from dbo.maps_report_list list 
join dbo.report_tac_agent tac 
on (tac.list_id = list.list_id) 
join dbo.d_agent_define map
on (map.agent_id = tac.agent_id)
where input = 'SYS_ERR' 
and app_name = 'CHARLOTT' 
and convert(varchar,dateadd(ss,day_tstamp,'01/01/1970'),101) = '09/10/2008' 
and list_name LIKE 'NRBAD%' 
order by agent_login,convert(varchar,dateadd(ss,TAC_BEG_tstamp,'01/01/1970'))

Merk at jeg heter din dateadd kolonne fordi den ikke har et navn. Jeg har også prøvd å holde konvensjon av hvordan du en delta. Det er et par ting som jeg ville gjøre annerledes med dette søket for å gjøre den mer lesbar, men jeg bare fokusert på å bli kvitt delspørringen problem.

Jeg gjorde ikke dette, men jeg vil anbefale at du kvalifiserer til alle kolonnene med tabellen som du får dem.

Svarte 17/09/2008 kl. 23:55
kilden bruker

stemmer
0

For å fjerne underspørring i SELECT-setningen jeg foreslå følgende:

SELECT list_name, app_name, map.fname + ' ' + map.lname as agent_login, input, convert(varchar,dateadd(ss, TAC_BEG_tstamp, '01/01/1970))
FROM dbo.maps_report_list inner join
  (dbo.report_tac_agent as tac inner join dbo.d_agent_define as map ON (tac.agent_id=map.agent_id)) ON list.list_id = tac.list_id
WHERE input = 'SYS_ERR' and app_name = 'CHARLOTT' and convert(varchar,dateadd(ss,day_tstamp,'01/01/1970'),101) = '09/10/2008' 
    and list_name LIKE 'NRBAD%' order by agent_login,convert(varchar,dateadd(ss,TAC_BEG_tstamp,'01/01/1970'))

I parentes brukt til å lage den indre overgangen mellom dbo.report_tac_agent og dbo.d_agent_define først. Dette er nå et sett med bli med data. Kombinasjonen av disse tabellene blir deretter koblet til din liste bord, som jeg antar er den drivende bord her. Hvis jeg forstår hva du prøver å gjøre med din sub velger, bør dette fungere for deg.

Som det fremgår av andre plakaten bør du bruke tabellnavn på kolonnene (f.eks map.fname), det gjør bare ting enkelt å forstå. Jeg gjorde ikke i mitt eksempel fordi jeg er oppmerksom 100% sikker på hvilke kolonner gå med hvilke tabeller. Gi meg beskjed hvis dette ikke gjøre det for deg, og hvordan dataene den returnerer er galt. Det vil gjøre det lettere å løse i nødvendig.

Svarte 18/09/2008 kl. 00:23
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more