तीन तालिकाओं के साथ SQL सर्वर में डेटा प्रदर्शित करें?

[ad_1]

श्री रिचर्ड डेमिंग को धन्यवाद (

@RichardDeeming

) मुझे दो तालिकाओं के योग का समाधान देने के लिए।

हालाँकि, मेरे पास एक तालिका है जिसमें एक कॉलम घटा है, यहाँ मुझे इसे हल करने का प्रयास करना होगा।

तालिका एक “एजेंट”
नाम पैसा
अहमद 600

तालिका दो “निर्यात”
कोई दिनांक नाम पैसा नहीं
1 25-1-2023 Ahemd 700
2 30-6-2023 खालिद 800
3 10-7-2023 अहमद 200
4 30-11-2023 अहमद 100

तालिका तीन “भुगतान”
कोई दिनांक नाम पैसा नहीं
1 25-2-2023 Ahemd 300
2 30-7-2023 खालिद 800
3 15-8-2023 अहमद 300
4 25-12-2023 अहमद 400

मैं तालिका को इस तरह प्रदर्शित करना चाहता हूं:
|नहीं | दिनांक | नाम | कुल | निर्यात | भुगतान | शेष पैसा
|—|—||——|——-|——–|— ——|———————-
| 0 | — | अहमद | 600 | 0 | 0 | 600
| 1 | 25-1-2023 | अहमद | 600 | 700 | 0 | 1300
| 1 | 25-2-2023 | अहमद | 1300 | 0 | 300 | 1000
| 3 | 10-7-2023 | अहमद | 1000 | 200 | 0 | 1200
| 3 | 15-8-2023 | अहमद | 1200 | 0 | 300 | 900
| 4 | 30-11-2023 | अहमद | 900 | 100 | 0 | 1000
| 4 | 25-12-2023 | अहमद | 1000 | 0 | 400 | 600

मैंने क्या प्रयास किया है:

श्रीमान रिचर्ड डेमिंग दो तालिकाओं के योग के लिए समाधान

WITH cteSource As
(
    SELECT
        0 As No,
        Name,
        Money
    FROM
        TableOne
    
    UNION ALL
    
    SELECT
        No,
        Name,
        Money
    FROM
        TableTwo As T2
    WHERE
        Exists
        (
            SELECT 1
            FROM TableOne As T1
            WHERE T1.Name = T2.Name
        )
)
SELECT
    No,
    Name,
    Money,
    SUM(Money) OVER (PARTITION BY Name ORDER BY No ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) As TotalMoney
FROM
    cteSource
;

समाधान 1

धन्यवाद दोस्तों, विशेष रूप से

Mr. Rechard Demming

हालाँकि, मुझे एक और समाधान मिल गया।

कुछ अन्य तालिका और कॉलम जोड़ने के बाद मैंने कोड के माध्यम से अपनी समस्या हल कर ली है:

WITH NEWTABLE AS
(
    SELECT
        0 As No,
		D AS DATE,
        N,
        OD AS MONEY,
		0  AS Export,
		0  AS Payment,
		'' AS NT
    FROM
        TBL_A
    
    UNION ALL
    
    SELECT
        INo As No,
		D AS DATE,
        N,
		0 AS MONEY,
		T AS Export,
		0 AS Payment,
		'صادر' AS NT
    FROM
        TBL_E_I As T2
	WHERE
        Exists
        (
            SELECT 1
            FROM TBL_A As T1
            WHERE T1.N = T2.N
        )

	UNION ALL

	SELECT
		No AS No,
		D AS DATE,
		N,
		0 AS MONEY,
		0 AS Export,
		PD AS Payment,
		'دفع' AS NT
	FROM
		TBL_A_P AS T3

    WHERE
        Exists
        (
            SELECT 1
            FROM TBL_A As T1
            WHERE T1.N = T3.N
        )
)
SELECT
    No AS 'ت',
	CAST(DATE AS DATE) AS 'التاريخ',
    N AS 'اسم',
    FORMAT(Money, 'G29') AS 'القديم',
	FORMAT(Export, 'G29') AS 'الصادر',
	FORMAT(Payment, 'G29') AS 'المدفوع',
    SUM((MONEY + Export) - Payment) OVER (PARTITION BY N ORDER BY DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) As 'المتبقي',
	NT AS 'ملاحظات'
FROM
    NEWTABLE
WHERE N = N'كريمينيا' ORDER BY DATE ASC
;

कोई दिनांक नहीं नाम पुराना निर्यात भुगतान शेष धन नोट
नोट शेष भुगतान निवर्तमान पुराना नाम दिनांक टी

No	Date	Name	Total	Export	Payment	RemaindMoney
ملاحظات     المتبقي      المدفوع    الصادر   القديم     الاسم    التاريخ    ت
0	25-1-2023	Ahmed	600	    0	    0	    600     قديم
1	25-1-2023	Ahmed	0	    700	    0	    1300    صادر
1	25-2-2023	Ahmed	0       0   	300 	1000    دفع
3	10-7-2023	Ahmed	0       200 	0   	1200    صادر
3	15-8-2023	Ahmed	0       0	    300 	900     دفع
4	30-11-2023	Ahmed	0       100 	0   	1000    صادر
4	25-12-2023	Ahmed	0       0   	400 	600     دفع

क्या कोई मुझे इस तरह का समाधान पाने में मदद कर सकता है:

No	Date	Name   Money	Export	Payment	RemaindMoney
ملاحظات     المتبقي      المدفوع    الصادر   القديم     الاسم    التاريخ    ت
0	25-1-2023	Ahmed	600	    0	    0	    600     قديم
1	25-1-2023	Ahmed	0	    700	    0	    1300    صادر
1	25-2-2023	Ahmed	0       0   	300 	1000    دفع
3	10-7-2023	Ahmed	0       200 	0   	1200    صادر
3	15-8-2023	Ahmed	0       0	    300 	900     دفع
4	30-11-2023	Ahmed	0       100 	0   	1000    صادر
4	25-12-2023	Ahmed	0       0   	400 	600     دفع

[ad_2]

コメント

タイトルとURLをコピーしました