次のようなテーブル(MySQL)があるとします。
CREATE TEMPORARY table IF NOT EXISTS tbl
(
REF_REQ_ID int AUTO_INCREMENT PRIMARY KEY,
FunctionalArea varchar(200),
Industry varchar(200)
);
INSERT INTO tbl
SELECT 1, 'IT Jobs', 'IT related Jobs' UNION ALL
SELECT 2, 'HR Jobs', NULL UNION ALL
SELECT 3, NULL, 'HR related Jobs' UNION ALL
SELECT 4, NULL, 'IT related Jobs' UNION ALL
SELECT 5, NULL, NULL UNION ALL
SELECT 6, 'IT Jobs', 'IT related Jobs' UNION ALL
SELECT 7, 'HR Jobs', NULL UNION ALL
SELECT 8, NULL, 'HR related Jobs' UNION ALL
SELECT 9, 'HR Jobs', NULL;
2つの列を1つの列(distinct
値)に結合して結合し、並べ替えたいのですがNoOfJobs
、どうすればそれを実現できますか?
期待される結果
JobTitle NoOfJobs
HR Jobs 3
IT related Jobs 3
HR related Jobs 2
IT Jobs 2
質問や質問の内容が適切でない場合はコメントしてください。
日付ベースはMySQLです。SQLServerでこれを実現する方法を知っています。
このクエリを実行するだけです(MS SQL Serverの場合):
DECLARE @tbl table
(
REF_REQ_ID int IDENTITY(1,1),
FunctionalArea varchar(200),
Industry varchar(200)
)
INSERT INTO @tbl
SELECT 'IT Jobs', 'IT related Jobs' UNION ALL
SELECT 'HR Jobs', NULL UNION ALL
SELECT NULL, 'HR related Jobs' UNION ALL
SELECT NULL, 'IT related Jobs' UNION ALL
SELECT NULL, NULL UNION ALL
SELECT 'IT Jobs', 'IT related Jobs' UNION ALL
SELECT 'HR Jobs', NULL UNION ALL
SELECT NULL, 'HR related Jobs' UNION ALL
SELECT 'HR Jobs', NULL
SELECT
JobTitle As JobTitle,
COUNT(REF_REQ_ID) As NoOfJobs
FROM
(SELECT
FunctionalArea As JobTitle,
REF_REQ_ID
FROM @tbl
UNION
SELECT
Industry As JobTitle,
REF_REQ_ID
FROM @tbl)t
WHERE JobTitle IS NOT NULL
GROUP BY JobTitle
ORDER BY NoOfJobs desc
UNION
それは私が期待した結果を私に与えるでしょう、しかし残念ながらMySQLは同じテーブルでサポートしていません(一時的)。
MySQLリーダー:期待される結果を達成するにはどうすればよいですか?
SQL Serverリーダー:同じことを行う別の方法はありますか?