Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दी गई तिथियों के बीच मूल्य की गणना करें

इस समाधान का प्रयोग करें:

SELECT     SUM(
               CASE WHEN a.Start_date = b.min_sd AND a.Start_date <> b.max_sd THEN
                        (DATEDIFF(a.End_date, '2012-08-30')+1) * a.Price
                    WHEN a.Start_date = b.max_sd AND a.Start_date <> b.min_sd THEN
                        DATEDIFF('2012-09-04', a.Start_date) * a.Price
                    WHEN (a.Start_date,a.Start_date) IN ((b.min_sd,b.max_sd)) THEN
                        (DATEDIFF('2012-09-04', '2012-08-30')+1) * a.Price
                    WHEN a.Start_date NOT IN (b.min_sd, b.max_sd)             THEN
                        (DATEDIFF(a.End_date, a.Start_date)+1) * a.Price
               END 
           ) AS totalprice
FROM       rooms a
CROSS JOIN (
           SELECT MIN(Start_date) AS min_sd,
                  MAX(Start_date) AS max_sd
           FROM   rooms
           WHERE  Room_type   = 'luxury'     AND
                  End_date   >= '2012-08-30' AND
                  Start_date <= '2012-09-04'
           ) b
WHERE      a.Room_type   = 'luxury'     AND
           a.End_date   >= '2012-08-30' AND
           a.Start_date <= '2012-09-04'

2012-08-30 . की घटनाओं को बदलें और 2012-09-04 आपके इनपुट के साथ क्रमशः प्रारंभ और समाप्ति तिथियां।

यह एक ही महीने में होने के साथ-साथ कई महीनों में फैले होने की शुरुआत और समाप्ति तिथियों के लिए जिम्मेदार होगा।

SQLFiddle डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RMySQL पैकेज को R में जोड़ना विफल रहता है (विंडोज़ पर)?

  2. mysql स्ट्रिंग पर पूर्ण शब्द या शब्द की शुरुआत से मेल खाना पसंद करता है

  3. MySQL के साथ Amazon RDS बनाम EC2 के संबंधित लाभ/सीमाएँ क्या हैं?

  4. कोणीय जे एस के साथ mySQL डेटाबेस के साथ उपयोगकर्ता लॉगिन प्रणाली?

  5. दो (दिनांक और समय) PHP के बीच का अंतर लौटाएं