2014-10-28 138 views
0

我有兩個子查詢,我想選擇兩個不同的列,但我不知道如何。現在嘗試了很長時間。SQL - 從一個選擇到另一個選擇的結果

換句話說,我需要這樣做:

select distinct A, B 
from (select * from selectstatement 1, selectstatement 2); 

我這是什麼。

我得到了兩個表table1和table2,每個類型爲三個列。

我:

selectstatement 1: 
     select * 
     from table1, table2; 

selectstatement 2: 
     select distinct table1.A, table1.B, table2.A, table2.B 
     from table1, table2 
     where (table1.A > table1.B and table2.A > table2.B) 
     or (table1.B > table1.A and table2.B > table2.A); 

我現在的問題是,從兩本select語句的挑選出列A和B,如select distinct A, B from (select * from selectstatement 1, selectstatement 2);

但這一切我都試過沒有奏效。

這並不工作:

select distinct P.A, P.B, T.A, T.B 
from ( select distinct table1.A, table1.B, table2.A, table2.B 
      from table1, table2 
      where (table1.A > table1.B and table2.A > table2.B) 
      or (table1.B > table1.A and table2.B > table2.A)) as P, 
    (select * from table1, table2) as T; 

但是,這也是錯的,如果我不喜歡它「select distinct A, B from (select * from selectstatement 1, selectstatement 2);」,是不是?

+0

查看錶別名 – kiks73 2014-10-28 06:38:45

+1

查詢2看起來沒問題。您選擇有問題的四列。但是,您想在查詢1中選擇哪些列?還有P.A,P.B,T.A,T.B?你正在做一個交叉連接,所以你得到所有可用的組合。查詢2中不存在任何不在查詢1中的組合。顯然,您希望有不同的東西。但是什麼?你正在談論*兩個*不同的列,但你選擇*四*。建議:嘗試解釋結果集應該是什麼樣子,就好像你對SQL一無所知。不要談論聯合和聯合查詢。只需描述結果表。 – 2014-10-28 08:51:56

+0

@ThorstenKettner:很好的建議。我會走得更遠,不要描述結果表,而只是描述你正在尋找的結果。 – jmoreno 2014-10-29 02:25:15

回答

0

試試這段代碼。

 select t1.ks, t1.[# Tasks], coalesce(t2.[# Late], 0) as [# Late] 
from 
    (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1 
left join 
    (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2 
on 
    t1.ks = t2.ks 
+0

我試過這個,沒有工作,這是我以上的代碼。 – wangzipirate 2014-10-28 06:46:12

+0

我得到此問題:消息8156,級別16,狀態1,行5 列'A'多次爲'P'指定。 消息8156,級別16,狀態1,行6 「A」列多次指定爲'T'。 – wangzipirate 2014-10-28 06:53:58

+0

你應該使用聯盟 – Sajidlodi 2014-10-28 06:58:47

-1

倒引號關鍵是在大多數鍵盤的左上角。)

像碼塊,碼跨度將在等寬字型進行顯示。 Markdown和HTML在其中不起作用。請注意,與代碼塊不同,代碼跨度需要您手動轉義任何HTML!

如果你的代碼本身包含反引號,您可能需要使用多個反引號作爲分隔符:

名稱Tuple`2是一個有效的.NET類型名稱。

相關問題