我有一个问题要问你们。我已经继承了'工作中的数据库,我必须使用不同的条件从表创建报告。请注意我没有sql专家,我希望我写的内容有道理。
为了简化,我有一个包含以下内容的HARDWARE表:
数据如下所示:
HWTYPE | HWMODEL | PHONENUM | USERID
-------+------------+------------+----------
SIM | SIMVOICE | 123456 | CIRO
SIM | SIMVOICE | 124578 | LEO
PHONE | APPLE | | CIRO
PHONE | SAMSUNG | | LEO
现在您可以看到,每个用户都分配了一部电话和一部带有电话号码的SIM卡。
我需要按用户对数据进行排序,以便查询结果的每一行看起来像:
HW | PHONENUM | USERID
---------+--------------+------
APPLE | 123456 | CIRO
SAMSUNG | 124578 | LEO
基本上如此:基于USER的组列PHONENUM和HWMODEL。
这就是我被卡住的地方!我尝试过工会,加入,案件等,但我仍然没有得到正确的结果。 再次为(可能)非常基本的问题道歉。我试图寻找类似但却找不到的东西。
感谢任何想要帮助我的人。 问候 利奥
答案 0 :(得分:1)
我不知道我理解你的问题 但我认为您只需要为您的O / P
编写以下查询SELECT
HWTYPE, HWMODEL, USERID
FROM
HARDWARE
GROUP BY USERID ,HWTYPE,HWMODEL
ORDER BY HWTYPE
答案 1 :(得分:1)
将我的评论作为答案;
将其写为SQL:
SELECT
(HWTYPE, HWMODEL, USERID)
FROM
HARDWARE
GROUP BY (USERID) /*Other Clauses can be added here, but ensure you use commas to seperate them!*/
一步一步:
SELECT ... -> what columns you want to see
FROM ... -> what table you want it from (use joins if you need from multiple tables)
GROUP BY... -> What you want to collect together
还有:
WHERE... -> conditions for when to include/what not to include
答案 2 :(得分:0)
如果您的目标是按用户排序的电话号码和模型列表,则可以使用此查询:
SELECT HWMODEL,PHONENUM,USERID FROM HARDWARE ORDER BY USER
希望能理解你的问题
答案 3 :(得分:0)
SELECT
hw.HWMODEL as HW
,phone.PHONENUM
,user.USERID
FROM
(
SELECT DISTINCT
USERID
FROM
HARDWARE
) as user
LEFT JOIN
(
SELECT
USERID
,PHONENUM
FROM
HARDWARE
WHERE
PHONENUM IS NOT NULL
) as phone
ON phone.USERID = user.USERID
LEFT JOIN
(
SELECT
USERID
,HWMODEL
FROM
HARDWARE
WHERE
HWTYPE = 'PHONE'
) AS hw
ON hw.USERID = user.USERID
ORDER BY
user.USERID
,hw.HWMODEL
答案 4 :(得分:0)
您还可以使用以下查询获得预期结果。这将使用硬件表上的自联接以及减少查询syntex的长度。
SELECT H2.HWMODEL AS HW,H1.PHONENUM,H1.USERID FROM HARDWARE H1 INNER JOIN HARDWARE H2 ON H1.USERID = H2.USERID
WHERE ISNULL(H1.PHONENUM,'') <> ''
AND ISNULL(H2.PHONENUM,'') = ''
ORDER BY H2.HWMODEL ASC
希望这会对你有所帮助。