Dan*_*ert 2 sql t-sql sql-server sql-server-2005
可以说我有一个包含列的表,例如:
IDNameCityStateZIP我需要编写一个只返回一行的查询.这行将包括City,, State和ZIP,但是如果结果集中的所有值都相同,我只希望字段具有值,否则我希望该字段为null.
例如,如果每个记录具有相同的State,则State将返回结果.如果只有一个结果具有不同的状态,我希望该字段为null.在SQL Server 2005中是否可以这样?
基本上,我想要一个这样的查询:
SELECT City, State, ZIP
FROM Users
WHERE ID IN(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)
但只返回一行,我在上面描述的规格.
SELECT
CASE WHEN COUNT(DISTINCT city) = 1 THEN MAX(city) ELSE NULL END AS city,
CASE WHEN COUNT(DISTINCT state) = 1 THEN MAX(state) ELSE NULL END AS state,
CASE WHEN COUNT(DISTINCT zip) = 1 THEN MAX(zip) ELSE NULL END AS zip
FROM Users
WHERE ID IN(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)
其他答案后:
SELECT
CASE WHEN COUNT(DISTINCT NULLIF(city,'**NULL**')) = 1 THEN MAX(city) ELSE NULL END AS city,
CASE WHEN COUNT(DISTINCT NULLIF(state,'**NULL**')) = 1 THEN MAX(state) ELSE NULL END AS state,
CASE WHEN COUNT(DISTINCT NULLIF(zip,'**NULL**')) = 1 THEN MAX(zip) ELSE NULL END AS zip
FROM Users
WHERE ID IN(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |