Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6601253
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T18:43:44+00:00 2026-05-25T18:43:44+00:00

I have table with positions tbl_positions id position 1 Driver 2 Lobby 3 Support

  • 0

I have table with positions

tbl_positions
   id position
    1 Driver
    2 Lobby
    3 Support
    4 Constructor 

and in other table i have users

EDIT:

   tbl_workers
      id   name   position position2 status
       1   John   2        3         4
       2   Mike   3        2         2
       3   Kate   2        0         3
       4   Andy   1        0         0

i do request of positions

SELECT p.id, 
    p.position, 
    SUM(CASE w.Status WHEN 2 THEN 1 ELSE 0 END)  AS booked,
    SUM(CASE w.Status WHEN 3 THEN 1 ELSE 0 END)  AS placed
  FROM  tbl_positions AS p LEFT JOIN tbl_workers AS w 
      ON w.position=p.id
GROUP BY p.id, p.position

I need output like this in single query.

Position    booked placed
Driver        0       0
Lobby         1       2
Support       0       2
Constructor   0       0

I need to evalate both field positon1 and position2 instead of one. I think its easy to modify it but i cannot find the right solution please help.

EDIT : Added status 4

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T18:43:45+00:00Added an answer on May 25, 2026 at 6:43 pm

    Instead of joining to tbl_workers you could join to its unpivoted variation where position and position2 would be in the same column but in different rows.

    Here’s how the unpivoting might look like:

    SELECT
      w.id,
      w.name,
      CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,
      w.status
    FROM tbl_workers AS w
      CROSS JOIN (SELECT 1 AS pos UNION ALL SELECT 2) AS x
    

    Here’s the entire query, which is basically your original query with the above query substituting for the tbl_workers table:

    SELECT p.id, 
      p.position, 
      SUM(CASE w.Status WHEN 2 THEN 1 ELSE 0 END)  AS booked,
      SUM(CASE w.Status WHEN 3 THEN 1 ELSE 0 END)  AS placed
    FROM tbl_positions AS p
      LEFT JOIN (
        SELECT
          w.id,
          w.name,
          CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,
          w.status
        FROM tbl_workers AS w
          CROSS JOIN (SELECT 1 AS pos UNION ALL SELECT 2) AS x
      ) AS w 
      ON w.position=p.id
    GROUP BY p.id, p.position
    

    UPDATE

    This is a modified script according to additional request in comments:

    SELECT p.id, 
      p.position, 
      SUM(CASE w.Status WHEN 2 THEN 1 ELSE 0 END)  AS booked,
      SUM(CASE w.Status WHEN 3 THEN 1 ELSE 0 END)  AS placed
    FROM tbl_positions AS p
      LEFT JOIN (
        SELECT
          w.id,
          w.name,
          CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,
          CASE w.status
            WHEN 4 THEN CASE x.pos WHEN 1 THEN 3 ELSE 2 END
            ELSE w.status
          END AS status
        FROM tbl_workers AS w
          CROSS JOIN (SELECT 1 AS pos UNION ALL SELECT 2) AS x
      ) AS w 
      ON w.position=p.id
    GROUP BY p.id, p.position
    

    The idea is to substitute the 4 status in the subselect with 3 or 2 depending on whether we are currently to pull position or position2 as the unified position. The outer select keeps using the same logic as before.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have table with positions tbl_positions id position 1 Driver 2 Lobby 3 Support
Suppose I have a table of users. Something like: ID integer, USER text, POSITION
I have table with 50 entries (users with such details like Name Surname Location
I have a table of positions where a position can have a related position
i have a table of IDs and positions CREATE TABLE #MissingSequence (ID INT NOT
I have a table in mysql which stores (among other columns) a bitmask as
I'm new to triggers . I have table like this CREATE TABLE [dbo].[Positions]( [Id]
Let's say I have a table called positions (as in job positions). On the
I have a table with many entities being predicted to other types of entities
I have a positions table in SQL Server 2008R2 (definition below). In the system

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.