Solving SQL Query | Rows to Column in SQL

  Рет қаралды 164,454

techTFQ

techTFQ

Күн бұрын

In this video, we will solve an SQL Query where we will need to transform data from rows to column.
We can transform data from rows to column in SQL using PIVOT operator but not all RDBMS supports PIVOT. Microsoft SQL Server and Oracle supports PIVOT operator, whereas in PostgreSQL, we can transform rows to column using CROSSTAB function. Similarly in MySQL database, rows to column transformation can be done using the CASE statement.
Hence in this video, we shall first look at the SQL query problem statement. We understand the input data and also understand the expected output. After this we shall write SQL query to solve this problem using PIVOT in Microsoft SQL Server and in Oracle.
We shall then solve the same problem in PostgreSQL database using CROSSTAB function. Finally we shall also solve this query in MySQL database using the CASE statement.
All the datasets, scripts and SQL queries used in this video can be downloaded from my blog and from my discord channel. Links below:
Blog: techtfq.com/video/solving-sql...
Discord: / discord
If you would like to share any interesting SQL query with me so that I can make a video about it then do share them in the email below:
Email id: techtfq@gmail.com
Timestamp:
00:00 Intro
01:58 Understanding the SQL Query Problem statement
04:20 Solving SQL Query in Microsoft SQL Server using PIVOT
26:59 Solving SQL Query in Oracle using PIVOT
32:46 Solving SQL Query in PostgreSQL using CROSSTAB
55:31 Solving SQL Query in MySQL using CASE statement
🔴 WATCH MORE VIDEOS HERE 👇
✅ SQL Tutorial - Basic concepts:
• SQL Tutorial - Basic c...
✅ SQL Tutorial - Intermediate concepts:
• SQL Tutorial - Interme...
✅ SQL Tutorial - Advance concepts:
• SQL Tutorial - Advance...
✅ Practice Solving Basic SQL Queries:
• Practice Solving BASIC...
✅ Practice Solving Intermediate SQL Queries:
• Practice Solving INTER...
✅ Practice Solving Complex SQL Queries:
• Practice Solving COMPL...
✅ Data Analytics Career guidance:
• Data Analytics career ...
✅ SQL Course, SQL Training Platform Recommendations:
• SQL Course / Training
✅ Python Tutorial:
• Python Tutorial
THANK YOU,
Thoufiq

Пікірлер: 187
@TheVaibhavdang
@TheVaibhavdang 2 жыл бұрын
Your content is what I am following from my initial days of learning sql. If possible please make more practise videos on sql with concepts every week/weekend so that our logic buildng can increase week by week. Thanks for the good content.
@Nizam_Ul_Mulk
@Nizam_Ul_Mulk 4 ай бұрын
Bro you are one of the best trainers I could ever come across. To the point and the crystal clear. Thanks one again.
@nataliebear9011
@nataliebear9011 Жыл бұрын
This is the best crosstab explanation I've seen. Thank you!!!
@SantanuRoy-oq2nv
@SantanuRoy-oq2nv Жыл бұрын
Taufiq sir, absolutely clear the "without ORDER BY clause in postgre SQL Crosstab"...what ever customer is visible as per the sequence , CROSSTAB is grouping those visible data. That's why ORDER BY is mandatory otherwise this weird type data will be show. Thank you sir
@mahamuthashameem3250
@mahamuthashameem3250 Жыл бұрын
till i watched this video, i was scared about pivot query, now i can understand it easily. thank yo so much for the video
@MOTIVAO
@MOTIVAO Жыл бұрын
Your videos are quite incredible, thank you Thoufiq for your patience and knowledge.
@kushalbaral8551
@kushalbaral8551 Жыл бұрын
Great content, helped with exactly what I needed for my current task at work. Thanks a lot !
@bala9535
@bala9535 2 жыл бұрын
Thank you so much... helping multi tools at same time...
@qurdedu4032
@qurdedu4032 2 жыл бұрын
Tofik, you are legend!
@pw6048
@pw6048 2 жыл бұрын
Good video, but for SQL Server i would recommend you look at the GROUPING SETS command. With that you can rewrite your query to below : When using "set statistics time on;" you can see it beeing a lot faster. ;with inner_data as ( select customer_id as Customer ,format(sales_date, 'MMM-yy') as sales_date ,cast(replace(amount, '$', '') as int) as amount from sales_data ) select * from ( select isnull(Customer, 'Total') as Customer, isnull(sales_date, 'Total') as sales_date, case when sign(sum(amount)) = -1 then concat('(', ABS(sum(amount)), ')$') else concat(sum(amount), '$') end as amount from ( SELECT a.Customer, b.sales_date, 0 as amount from inner_data a inner join inner_data b on a.Customer b.Customer and a.sales_date b.sales_date union all select Customer ,sales_date ,amount from inner_data ) a group by GROUPING SETS( (Customer, sales_date), (Customer),(sales_date)) ) as sales pivot ( max(amount) for sales_date in ([Jan-21], [Feb-21], [Mar-21], [Apr-21] ,[May-21], [Jun-21], [Jul-21], [Aug-21] ,[Sep-21], [Oct-21], [Nov-21], [Dec-21],[Total]) ) as pivot_table
@olganikitochkina8526
@olganikitochkina8526 3 ай бұрын
This is the best explanation! Thank you so much ❤
@samadixyachine8422
@samadixyachine8422 Жыл бұрын
Although i am not an English speaker, that does not prevent me from following you. It is very well explained with well chosen examples. I learned a lot thanks to you. Believe me you are the best. I copied the exact same query using crosstab and when i added the second argument i got the error : column ("Jan-21") does not exist. I hope you can explain the origin of the problem to me. GREAT THANKS (i replaced ("Jan-21") with (' 'Jan-21' ') and it worked)
@sohailahmed3503
@sohailahmed3503 Жыл бұрын
Garrett Evans Wow thank you Garrett, you've made my day!
@adzplus1
@adzplus1 2 жыл бұрын
Awesome. Great video! Much helpful
@DHARMYOGCOM
@DHARMYOGCOM 2 жыл бұрын
this is a great one. thanks. i always wanted to do pivot queries. never really got around to it. now i got to learn it with my current project. very helpful video. thanks
@DHARMYOGCOM
@DHARMYOGCOM 2 жыл бұрын
thanks again. I just completed my report. Just have few little things to add but this video was very handy.
@martinberger365
@martinberger365 4 ай бұрын
You are a Big treasure, bro. ❤
@likitha-sneha
@likitha-sneha Жыл бұрын
Thanks for the explanation. Ur explanations are crystal clear. I subscribed to ur channel..☺️
@abhijeetwadkar2564
@abhijeetwadkar2564 2 жыл бұрын
Just wanted to say Thanks!!! Your sql joins video helped me crack my first tech interview. Kep up the good work brother.....
@techTFQ
@techTFQ 2 жыл бұрын
thank you, Great to hear Abhijeet!
@santoshkumarchannel8087
@santoshkumarchannel8087 Жыл бұрын
I also searching the same....But finally got from you Thank you
@nishantgupta2747
@nishantgupta2747 2 жыл бұрын
Hi Taufiq Just one word you are the best !!!! when it comes to sql
@LuLu-in3ix
@LuLu-in3ix 3 ай бұрын
your video is very helpful for me. thank you. 👍
@karunakaranr2473
@karunakaranr2473 Жыл бұрын
Very helpful and thank you for your time and effort to make this excellent video.
@IainMace
@IainMace 2 жыл бұрын
Outstanding. worked perfectly (for MySql). Thanks heaps
@techTFQ
@techTFQ 2 жыл бұрын
Glad to hear that
@user-sy4mp8hq6i
@user-sy4mp8hq6i Жыл бұрын
This video saved me! Thank you sir.
@sandeepkhawas3367
@sandeepkhawas3367 2 жыл бұрын
I m so thankful to you brother....i must say video is very informative which is helping me to increase my skills on SQL...!! 👍
@techTFQ
@techTFQ 2 жыл бұрын
thank you Sandeep :)
@pitou00
@pitou00 Жыл бұрын
that was some useful stuff man, thankyou so much. mark my words "im going to get a data analyst job soon " and you are playing very important role in my journey.
@nada-rw6iy
@nada-rw6iy 4 ай бұрын
I hope you got the job you wanted, any updates? I just started to understand the fundamentals of data engineering and I would love to hear how your journey is going and what helped you the most
@Anonymous_it_is
@Anonymous_it_is 2 жыл бұрын
Everytime you upload a new video, it brings abundance of knowledge in our lives. Thanks for this quality content. Maza aa jata hai aapka explanation sunke😁 Please consider making videos on topics such as Indexing(in depth) and database designing if possible.
@techTFQ
@techTFQ 2 жыл бұрын
Thank you Rohit.. Very happy to read your positive feedback ❤️
@crazydot81
@crazydot81 2 жыл бұрын
Awesome explanation! As always. Great thanks!
@techTFQ
@techTFQ 2 жыл бұрын
Glad you liked it :)
@jarodelaro
@jarodelaro Жыл бұрын
Mannnn you are simply the best ever, thanks so much, it helps a lottttttttttt!!!!
@techTFQ
@techTFQ Жыл бұрын
Glad to hear that ☺️
@bobhutchins557
@bobhutchins557 2 жыл бұрын
What an outstanding video! Ver well done! Thank you for putting it together. I have a question, though. I'm primarily a MySQL users but also use SQL Server. How could we set this up to be more dynamic? For example, let's say your column table covered 24 months and had 5 customers. Instead of writing out 24 lines of code each time (1 for each column) and then 24 lines multiple times, is there a way to write much fewer lines using variables, loops and a WITH clause? Thanks again - your videos have taught me so, so much!
@kancharalaparameshwarreddy3837
@kancharalaparameshwarreddy3837 2 жыл бұрын
Good video sir it is very help full and iam alway thankful to you sir ,sir kindly provide every week one imortant video
@techTFQ
@techTFQ 2 жыл бұрын
Thank you bro.. And sure will try doing it bro
@vablestory2.0
@vablestory2.0 Жыл бұрын
awesome taufiq....you are a star
@grow_your_faith
@grow_your_faith Жыл бұрын
Great work techTFQ
@maliktauqeer690
@maliktauqeer690 Жыл бұрын
Good video. You can wrap base query in (Double Dollar) $$ SUBQUERY $$ for postgres. Then you don't need to escape single quotes and makes it easy to read and write subquery.
@mistypokeman3261
@mistypokeman3261 2 жыл бұрын
Hi, your videos are very helpful. Could you please upload the data sets you used in this video? I've checked in discord but I did not find any. Appreciate all your efforts 👍
@anandpaulmangalam2192
@anandpaulmangalam2192 Жыл бұрын
Tf...awesome and great work. Although I have been writing SQL for several years, i could learn few new tips and tricks from you. I have a suggestion. Can you come up with a video that shows how to calculate cumulative totals and average totals on a rolling window. for e.g i need to calculate a 9 quarter ( 27months) average balance and cumulative losses. I have seen your window function video but that video lacks a real life problem solving component
@samiali5833
@samiali5833 Жыл бұрын
You have great content
@Christsermons
@Christsermons 11 ай бұрын
Great one thanks boss
@abdullahyahya2471
@abdullahyahya2471 2 жыл бұрын
Great Video. Love you. #noHomo.
@jawilson61
@jawilson61 11 ай бұрын
Really cool stuff
@cooldwnload
@cooldwnload 10 ай бұрын
good work 👍
@ramakumarguntamadugu1299
@ramakumarguntamadugu1299 2 жыл бұрын
Great 👍 content as always 👌 thank you
@techTFQ
@techTFQ 2 жыл бұрын
Glad you liked it buddy
@zemichal
@zemichal Жыл бұрын
thank you, subbed :)
@user-fc5vp8ij3n
@user-fc5vp8ij3n Жыл бұрын
Hello Sir, Very good example about transpose method in SQL using PIVOT as well as its equivalent in other RDBMS. Kindly clarify whether there is any method to make IN part in pivot dynamic instead of hardcoding. Thank you
@faranbaig6486
@faranbaig6486 Жыл бұрын
Thanks for the clarity Taufiq! I'm wondering if Crosstab allows date ranges to be selected dynamically. Instead of hard coding the months, is there a way for it to pick up whatever months the data has?
@AliBuKarrar
@AliBuKarrar 5 ай бұрын
Thank you so much! Just a quick note, in oracle we can use coalesce.
@obbubhanuchandra9729
@obbubhanuchandra9729 2 жыл бұрын
Do video to PLSQL real- time querys bro This video you do is help many persons bro
@babun4915
@babun4915 Жыл бұрын
Great work! Can we have a content with the comparison of oracle and ms sql ... that helps in migration of entire oracle to ms sql in terms of simple query to stored procedures
@sonalivv
@sonalivv 2 жыл бұрын
This was a great video! I also loved how well you presented it, explaining every little detail. That way it is easy to remember the syntax. Thank you!! This was super helpful. Earlier I used to do sum() or max() to get a pivot output in postgres. crosstab will make my life a lot easier. One question - Is there a way we can dynamically populate the values for "as" and "values". For instance, instead of months, I have a list of products (which is dynamically populated) and I want to pivot customer against products. Is this possible in postgres?
@techTFQ
@techTFQ 2 жыл бұрын
Thank you 🙏🏼 Instead of values you can provide an sql query as the second argument in crosstab.. But this query should just return 1 column
@sonalivv
@sonalivv 2 жыл бұрын
@@techTFQ Thank you!! I will try this 🙏🏼
@raheemaslam6748
@raheemaslam6748 Жыл бұрын
🤩 you deserve millions subscribers bro
@techTFQ
@techTFQ Жыл бұрын
Thank you so much :)
@kaushikbhide9387
@kaushikbhide9387 2 жыл бұрын
Thank You 👏👏 great content
@techTFQ
@techTFQ 2 жыл бұрын
Glad you think so!
@arunv1909
@arunv1909 2 жыл бұрын
honestly thank you for the video , but i learnt sub query in a different way , and you adding alias name in front and few things made me confuse a bit tbh , i understood the concept , thank you
@techTFQ
@techTFQ 2 жыл бұрын
thanks but don't confuse this with subquery. Ive made separate video for subquery.
@arunv1909
@arunv1909 2 жыл бұрын
@@techTFQ but you wont call this a subquery? ohh , i thought the end part as corelated subquery
@techTFQ
@techTFQ 2 жыл бұрын
This is the syntax for pivot operator..
@arefbegh5298
@arefbegh5298 5 ай бұрын
Tqsm sir ❤️❤️
@innominatesoloist1597
@innominatesoloist1597 Жыл бұрын
My God...........so many learnings in just one video
@techTFQ
@techTFQ Жыл бұрын
thanks bro
@hanshubassa9735
@hanshubassa9735 2 жыл бұрын
Great explanation sir
@techTFQ
@techTFQ 2 жыл бұрын
Thank you buddy
@padmavathisonnaila6600
@padmavathisonnaila6600 2 жыл бұрын
Hi your videos are very helpful to me and I m begginer bit confused what is the difference between mysql,sql server, oracle,posgresql,plsql can u make a video on it please. Thank you in advance
@amitpandey9222
@amitpandey9222 2 жыл бұрын
Your every content are amazing and very well explained.Can you please create playlist around SQL query tuning and performance?
@techTFQ
@techTFQ 2 жыл бұрын
Thank you Amit , glad you like them.. And noted on the suggestion
@amitpandey9222
@amitpandey9222 2 жыл бұрын
@@techTFQ thank you
@iswillia123
@iswillia123 8 ай бұрын
Thanks for the content you put out, Taufiq. One question: can't you put the coalesce/NVL in the base query? Then you wouldn't have to put 12 such statements after the pivot.
@majidrooinparvizi8649
@majidrooinparvizi8649 10 ай бұрын
Following and enjoying your videos. But in these cases, isn't it just much easier and faster to do these transformations in Excel and import the results into sequel tables for further analysis if needed?
@Braiam
@Braiam 2 жыл бұрын
While useful this video confirms one of my believes: that pivoting on the database has the potential to be messy, and it's best dealt with in the application.
@martinsenobong9241
@martinsenobong9241 8 ай бұрын
Great recourse for learning SQL
@techTFQ
@techTFQ 7 ай бұрын
Thank you ☺️
@rajudasari8482
@rajudasari8482 2 жыл бұрын
Good Approach, can we have one video on UN Pivot same scenario, and what about if the new month is added it won't be dynamic. Any approach?
@Tarunkumar-zw6sd
@Tarunkumar-zw6sd Ай бұрын
can you make a video on transactions please. Appreciate your work ,Thank you.
@Mayank-jw9yy
@Mayank-jw9yy Ай бұрын
Amazing work please also share raw data of this amazing problem
@satheeshkumarak6708
@satheeshkumarak6708 2 жыл бұрын
Brilliant one Bro. Waiting for Unpivot and Regular Expressions 😅
@techTFQ
@techTFQ 2 жыл бұрын
Thank you and noted bro
@kancharalaparameshwarreddy3837
@kancharalaparameshwarreddy3837 2 жыл бұрын
Good morning sir,next week plz provide on indexes And json
@agustinagarciaguevara9923
@agustinagarciaguevara9923 2 жыл бұрын
Hi!! Thank you so much for this content, it's very useful and well explained. I'm trying to do exactly the same query you do on the first part of the video, and for some reason the pivot is not recognizing one of the values in that column. Have you had a similar problem?
@baburao25
@baburao25 Жыл бұрын
Thanks for the in detail explanation. Can you provide WEBAPI for the same
@srh1034
@srh1034 2 ай бұрын
@techtfq: Of all your videos this one is the most confusing and messy! Just jumping from here to there! Wish you could do more organized considering how good you are in explaining complex matters in simple ways!
@ManishkumarTiwari043
@ManishkumarTiwari043 Жыл бұрын
Great content tauphik sir, can you please create a separate video like this for unpivot...
@techTFQ
@techTFQ Жыл бұрын
Sure bro will do it
@sarbarthamitra2081
@sarbarthamitra2081 2 жыл бұрын
Is there a way to do the reverse of pivoting (unpivot) in mysql? Using no special function
@chocoloaga575
@chocoloaga575 Жыл бұрын
hi Sir, one Query. Can we use the pivot command without an aggregate function? Your Suggestions on this please.
@chandrageetham
@chandrageetham 2 жыл бұрын
would you please deliver a class on clustered and nonclustered indices
@ashokbhum06
@ashokbhum06 9 ай бұрын
Thank you buddy
@techTFQ
@techTFQ 7 ай бұрын
You're welcome ☺️
@jesthyrdevera9743
@jesthyrdevera9743 Ай бұрын
Hello - For some reasons some of the data extracted using crosstab does not align in the columns they are expected to. For example there are 5 columns and one of the records has values for 1, 3 and 5 but when I used crosstab the values for columns 1,3 and 5 goes to columns 1,2 and 3. What should I do to align those data properly? thank you for those who will respond.
@winstonsmith8597
@winstonsmith8597 11 ай бұрын
MMM-YY, Great, some developer in the future will now need to Y3K proof the code. :)
@esteban3555
@esteban3555 4 ай бұрын
in oracle, coalesce is definitely supported! 👍🏽
@sharukhbilal5710
@sharukhbilal5710 2 жыл бұрын
Bro kindly make video on regular expressions from scratch till advanced level
@techTFQ
@techTFQ 2 жыл бұрын
Noted bro will consider it
@sumibits
@sumibits 2 жыл бұрын
Thank you Taufiq. This is really helpful. I have one quick question. All period which you have used in example and query are kind of static one (Jan21, Feb21 …). How do we make it more dynamic? Meaning, what if we have updated sales data for year 23 or 24… changing period value in query may not be good idea in long run. Any thoughts on this ?
@alexanderbykovdev7364
@alexanderbykovdev7364 2 жыл бұрын
I haven't tried it yet, but can you try to use a query for the "for column value in ()" select and make some kind of distinct month-year in the same query?
@MiningForPies
@MiningForPies 2 жыл бұрын
In SQL server dynamic pivots are not supported natively. You would need to generate the SQL as a text string and run sp_execute sql on that. It’s a really big missing feature, stops me using pivots at all just not worth the hassle
@winattempts9835
@winattempts9835 2 жыл бұрын
Hi pls tell if recorded lecture available? and any price benifit compared to live? Please
@celebrationsthecelebschoic575
@celebrationsthecelebschoic575 Жыл бұрын
Can't we use distinct customer in select, add both date and customer in group by, and then use sum(amount)??
@saifsayyed07
@saifsayyed07 Жыл бұрын
Hii can you share the same problem with joins ? I don't exactly have the table but need to get data from different tables. Like 3 or 4 tables
@merkleinc2648
@merkleinc2648 Жыл бұрын
It was asked in one of my interview. And I was like yaa allah iske aage bhi kuch hota hai kya
@anburenganathan8369
@anburenganathan8369 2 жыл бұрын
Thanks thoufig.. Is it possible make column names are dynamic.. I felt you are hard coding?
@whoareyou9348
@whoareyou9348 Жыл бұрын
Hi tfq can you please upload the video about data validation and performance tuning
@ramanat1424
@ramanat1424 2 жыл бұрын
please tell me PL/SQL, POSTGRESQL both same or different?
@AmanKumar-bi4jl
@AmanKumar-bi4jl 2 жыл бұрын
Hey, I have two table one is student table with the field studentID, Name and other details and another is Attendance table with the field studentID and Date. I want to select record for each student for each day, fill record with the latter 'P' as present and 'A' as absent. How can I do??
@sayantankar9141
@sayantankar9141 Жыл бұрын
can you expalin that last part where you are finding the total respective of each column. Please explain the query you used in mysql
@vijayendrasdm
@vijayendrasdm 2 жыл бұрын
Hey Taufiq When are you planning to start fresh sql course ? Looking forward to enrol. Thanks.
@sunnygawande5283
@sunnygawande5283 2 жыл бұрын
One video on data cleaning in sql
@techTFQ
@techTFQ 2 жыл бұрын
Sure bro will do it
@Anvesh2013
@Anvesh2013 Жыл бұрын
12:00 is there no way to generate those columns with months programatically, (procedurally) instead of hardcoding them
@brianligat2038
@brianligat2038 Жыл бұрын
The totals were a bit messy. Could you have added Total values along with the Customers and Months and created that with an initial WITH clause?
@solvedit
@solvedit 7 ай бұрын
What will be the solution where columns varies based on customer names instead of month names as column. I want to say that month are fixed to 12 columns but customers are dynamic & any time a new customer can be inserted in our record. I need customer names in columns & Month-Year in rows.
@rkfacts4891
@rkfacts4891 2 жыл бұрын
Hi sir,kindly let me know Do you have any institution in chennai ?
@Iceeboltt
@Iceeboltt 3 ай бұрын
Sir one important doubt can we work in company and also post tech videos and tutorials as a freelancer will this be considered dual employment/moonlighting?
@ManiKandan-kg5ky
@ManiKandan-kg5ky 2 жыл бұрын
Hi when will your next batch starts?
@techTFQ
@techTFQ 2 жыл бұрын
Probably in August
@jamesopoku8049
@jamesopoku8049 2 жыл бұрын
Hi sir, good work done, please, may we get some videos on TRIGGER in postgresql....? Thanks
@techTFQ
@techTFQ 2 жыл бұрын
Thank you and sure will do
@jalalnayak6282
@jalalnayak6282 Жыл бұрын
Hello sir, Can you plz show me how to insert the large data sets into SQL from excel. Csv/xls etc. Thank you
@baradhwajgudepu7110
@baradhwajgudepu7110 11 ай бұрын
Thank you taufiq, i struck in converting columns to rows can you help in doing that please
@maghy_kethychannel
@maghy_kethychannel Жыл бұрын
could you please make a video on date related functions
Complete guide to Database Normalization in SQL
40:51
techTFQ
Рет қаралды 154 М.
Fast and Furious: New Zealand 🚗
00:29
How Ridiculous
Рет қаралды 41 МЛН
Gym belt !! 😂😂  @kauermtt
00:10
Tibo InShape
Рет қаралды 17 МЛН
Inside Out 2: Who is the strongest? Joy vs Envy vs Anger #shorts #animation
00:22
No empty
00:35
Mamasoboliha
Рет қаралды 8 МЛН
Fast and Furious: New Zealand 🚗
00:29
How Ridiculous
Рет қаралды 41 МЛН