UPDATE [asgdb01].[dbo].[info]
SET [FM] = SUM(a.[PAZARTESI] - b.[KOTA])
FROM [asgdb01].[dbo].[info] a, [asgdb01].[dbo].[kota] b
WHERE a.[WORK_TYPE]='IN' AND a.[NAME]='ALP'
kümesi listesinde görünmeyebilir?bir agrega bir UPDATE deyimi
UPDATE [asgdb01].[dbo].[info]
SET [FM] = SUM(a.[PAZARTESI] - b.[KOTA])
FROM [asgdb01].[dbo].[info] a, [asgdb01].[dbo].[kota] b
WHERE a.[WORK_TYPE]='IN' AND a.[NAME]='ALP'
kümesi listesinde görünmeyebilir?bir agrega bir UPDATE deyimi
Tahmin ediyorum (diğerlerinin işaret ettiği gibi) bu güncellemede gerçekten bir kartezyen istemiyorsunuz, bu yüzden sorguya bir "id" ekledim, böylece bir değişiklik yapmanız gerekecek, ancak bu size Doğru yol üzerinde
;with temp as (
select a.id, SUM(a.pazartesi - b.kota) as newTotal
from [asgdb01].[dbo].[info] a join [asgdb01].[dbo].[kota] b
on a.id = b.id
where a.work_type='in' and a.name='alp')
update a
set fm = t.newTotal
from [asgdb01].[dbo].[info] a join temp t on a.id = t.id
Toplamı yerine sayı kullanarak çalışmasını sağlamak için kimliğiyle kimliğe göre gruplamak zorunda kaldım. Fantastik cevap olsa da. –
+1 [CTEs] (https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql) aksine bir zarif ve iyi bir performans çözümü [çok sayıda] (https://stackoverflow.com/questions/25937315/) "CROSS" veya satır içi alt sorgular kullanan diğer yollar. – dakab
Aslında bu kartezyen ürünü yapmak ister misiniz? Ayrıca, ne RDBMS kullanıyorsunuz? – Lamak
mssql kullanıyorum ve farklı masalardan gelen pazartesi ile kota arasındaki ayrımı yapmak istiyorum. –
İki farklı tablo kullanmak istediğinizi biliyorum, ancak aralarında bir "JOIN" koşulu kullanmadığınızı, dolayısıyla kartezyen bir ürünle sonuçlandığınızı biliyor musunuz? – Lamak