我有兩個表(基表和數據表),我正在使用OUTER APPLY合併以獲得結果。將列顯示爲複雜Select語句中的行sql
tblBase
看起來是這樣的:
+------+------+
| IDnu | Name |
+------+------+
| 1 | abc |
| 2 | cde |
| 3 | efg |
| 4 | rfl |
+------+------+
tblData
是這樣的:
+------+--------+--------+--------+-------------+
| IDNu | Price1 | Price2 | Price3 | ProductType |
+------+--------+--------+--------+-------------+
| 1 | 10 | 15 | 20 | Old |
| 2 | 10 | 20 | 30 | Refurbished |
| 3 | 20 | 30 | 40 | New |
| 1 | 20 | 15 | 20 | New |
| 2 | 20 | 10 | 30 | Old |
+------+--------+--------+--------+-------------+
我基於幾個標準,其計算tblData
當前查詢是如下:
Select IDNu, Name, t2.PNew, t2.POld FROM tblBase as t1
OUTER APPLY
(
SELECT
SUM (CASE WHEN ProductType = 'New' THEN Price1 + Price2 ELSE 0 END) AS PNew,
SUM (CASE WHEN ProductType = 'Old' THEN Price2 + Price3 ELSE 0 END) AS POld
FROM tblData
WHERE IDNu = t1.IDNu
GROUP BY IDNu
) t2
的以上查詢結果爲:
+------+------------+------+------+
| IDNu | Name | PNew | POld |
+------+------------+------+------+
| 1 | abc | 35 | 35 |
| 2 | cde | 0 | 40 |
| 3 | efg | 50 | 0 |
| 4 | rfl | NULL | NULL |
+------+------------+------+------+
現在的問題是,而不是顯示在兩列PNEW和POLD,顯示他們行?像這樣:
+------+------------+-------------+-------+
| IDNu | Name | ProductType | Price |
+------+------------+-------------+-------+
| 1 | abc | PNew | 35 |
| 2 | cde | PNew | 0 |
| 3 | efg | PNew | 50 |
| 4 | rfl | PNew | NULL |
| 1 | abc | POld | 35 |
| 2 | cde | POld | 40 |
| 3 | efg | POld | 0 |
| 4 | rfl | POld | NULL |
+------+------------+-------------+-------+
這不是MySQL的。這是TSQL .. Stackoverflow自動將它標記爲'mysql',不知道爲什麼。 – Shanka
對不起,我知道爲什麼。我修好了它。謝謝。 – Shanka
如果您要提出與SQL相關的問題,請參閱此文章:[*如何在公共論壇上發佈T-SQL問題*](http://spaghettidba.com/2015/04/24/how -to-post-at-sql-question-on-a-public-forum /) –