简体   繁体   中英

Join Table1 with Table2 using Table1 column values in Table2's conditionals

I have the following select statement...

SELECT ROW_NUMBER() OVER(order by cola) as [id], cola
  FROM Table1

That makes up my table of all values I'm wanting to insert as @var, right now it works but I have to specify @var each time...

 SELECT @var AS [Cola], (

            SELECT COUNT(*)
              FROM vwTableA AS Z
             WHERE Cola = COALESCE(@var,Cola)
               AND NOT EXISTS (

                        SELECT * 
                          FROM TableB
                         WHERE Colb = Z.Colb

                              )

  ) AS [NewCol1],
  (

            SELECT COUNT(*)
              FROM vwTableB AS Y
             INNER JOIN TableC AS C
                ON Y.Colc = C.Colc
             WHERE Y.Cola = @var

  ) AS [NewCol2],
  (

            SELECT COUNT(*)
              FROM vwTableC AS X
             INNER JOIN TableD AS D
                ON X.Colc = D.Colc
             WHERE X.Cola = @var

  ) AS [NewCol3]

So I'm wanting to run this second select through all the values of "cola" from the first Select/Table I showed, instead of having to specify the @var and it only return one row each time. How can I do this?

If you use a Common Table Expression CTE you can use it to join to your other statement

with var as 
( SELECT ROW_NUMBER() OVER(order by cola) as [id], cola
  FROM Table1)


SELECT var.id  AS [Cola], (

            SELECT COUNT(*)
              FROM vwTableA AS Z
             WHERE Cola = COALESCE(var.id,Cola)
               AND NOT EXISTS (

                        SELECT * 
                          FROM TableB
                         WHERE Colb = Z.Colb

                              )

  ) AS [NewCol1],
  (

            SELECT COUNT(*)
              FROM vwTableB AS Y
             INNER JOIN TableC AS C
                ON Y.Colc = C.Colc
             WHERE Y.Cola = var.id

  ) AS [NewCol2],
  (

            SELECT COUNT(*)
              FROM vwTableC AS X
             INNER JOIN TableD AS D
                ON X.Colc = D.Colc
             WHERE X.Cola = var.id

  ) AS [NewCol3]
FROM var

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM