मैं इस प्रश्न से जूझ रहा हूं:

SELECT 
  case strftime('%m',Expenses.Date)  
    when '01' then 'January' 
    when '02' then 'Febuary' 
    when '03' then 'March' 
    when '04' then 'April' 
    when '05' then 'May' 
    when '06' then 'June' 
    when '07' then 'July' 
    when '08' then 'August' 
    when '09' then 'September' 
    when '10' then 'October' 
    when '11' then 'November' 
    when '12' then 'December' 
    else '' 
  end as monthName ,
  strftime('%m',Expenses.Date) as monthnum,
  SUM(Expenses.Amount),
  SUM(Incomes.Amount)
FROM Expenses JOIN Incomes 
ON Expenses.UserID = Incomes.UserID
GROUP BY strftime('%m',Expenses.Date), strftime('%m',Incomes.Date)

मैं जो करने की कोशिश कर रहा हूं वह है sum() कॉलम Amount से टेबल Expenses और sum() कॉलम Amount से टेबल Incomes एक क्वेरी में दो अलग-अलग कॉलम के रूप में लेकिन मैं एक त्रुटि के लिए चल रहा हूँ। कृपया अगर कोई मेरी मदद कर सकता है।

2
isra kat 17 पद 2020, 16:47

1 उत्तर

सबसे बढ़िया उत्तर

सभी उपयोगकर्ता आईडी और एक क्वेरी के क्रॉस जॉइन का उपयोग करें जो सभी महीने की संख्या और नाम लौटाता है और फिर बाएं प्रत्येक तालिका में अलग-अलग प्रश्नों में शामिल होता है:

WITH
  m(monthnum, monthname) AS (
    VALUES ('01', 'January'), ('02', 'Febuary'), ('03', 'March'), ('04', 'April'),
           ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), 
           ('09', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')
  ),
  u AS (
    SELECT UserID FROM Expenses
    UNION
    SELECT UserID FROM Incomes
  ),  
  e AS (
    SELECT UserID, strftime('%m', Date) AS monthnum, SUM(Amount) Amount
    FROM Expenses
    GROUP BY UserID, monthnum
  ),
  i AS (
    SELECT UserID, strftime('%m', Date) AS monthnum, SUM(Amount) Amount
    FROM Incomes
    GROUP BY UserID, monthnum
  )
  
SELECT u.UserID, m.monthnum, m.monthname,
       COALESCE(e.Amount, 0) expenses_amount,
       COALESCE(i.Amount, 0) income_amount
FROM m CROSS JOIN u
LEFT JOIN e ON e.monthnum = m.monthnum AND e.UserID = u.UserID
LEFT JOIN i ON i.monthnum = m.monthnum AND i.UserID = u.UserID
ORDER BY u.UserID, m.monthnum
2
forpas 17 पद 2020, 17:51
1
मेरी मदद करने के लिए धन्यवाद, क्वेरी अच्छी तरह से काम करती है। मुझे अभी इसका अध्ययन करना है क्योंकि यह वास्तव में मेरे लिए उन्नत है। धन्यवाद
 – 
isra kat
17 पद 2020, 18:40
1
...FROM Expenses WHERE UserID = ? GROUP BY UserID, monthnum
 – 
forpas
22 पद 2020, 14:04