Sengaja menggunakan judul bahasa Inggris, karena menurut saya lebih mudah dicerna.
Intinya adalah "Bagaimana menggunakan Alias yang terdapat pada Select statement untuk Where clause"
Misal:
Select concat(FirstName, LastName) as FullName
from Employees
where FullName = 'Im Yoona'
Query diatas akan menimbulkan error, karena WHERE adalah T-SQL, WHERE clause selalu dieksekusi terlebih dahulu sebelum SELECT statement, sehingga alias FullName tidak akan terdefinisikan oleh WHERE clause.
Jika anda belum tahu/lupa dengan cara kerja garis besar query pada sql (untuk SELECT statement), bisa dilihat pada artikel :
How Select Statement Works
Ingat: pada SQL Server fungsi concat belum tentu ada, biasanya diganti dengan '+' (tanpa petik).
Hal tersebut mudah saja untuk diselesaikan, yaitu dengan menaruh formula concat(FirstName, LastName) = 'Im Yoona' pada WHERE clause.
Tetapi bagaimana jika formulanya kompleks seperti :
case when ctr.slrid =
(select mbrcompany from CTRBOOK where ctrbook.CTRBOOKID = ctr.CTRBOOKID)
then (select mbrshortname from jcmbr jc where MBRID = ctr.byrid)
else (select mbrshortname from jcmbr jc where MBRID = ctr.slrid) end as 'counterparty'
Ada 2 cara:
1. Dengan melakukan aliasing table pada formula:
SELECT FullName
FROM (
select concat(FirstName, LastName) as FullName
from Employees
) as sub
WHERE sub.FullName = 'Im Yoona'
2. Membuat View
CREATE VIEW dbo.EmployeesConcat
AS
SELECT
concat(FirstName,LastName) as FullName
FROM Employees
-- maka sql statementnya menjadi lebih singkat
SELECT
FullName
FROM EmployeesConcat
WHERE FullName = 'Im Yoona'
Untuk cara lainnya mungkin ada tapi belum dicari lagi, dan kiranya bisa kasih masukkan jika ada :)
Jika ada salah, mohon koreksinya :)
Maksud hati hanya mao sharing yang saya tau kok :D
No comments:
Post a Comment